Monday, August 4, 2008

Makefile

Secara umum makefile adalah aturan untuk memanggil tiga proses berikut :
1. all : proses untuk nge-build (compiling & linking)
2. clean : menghapus file-file obyek hasil building
3. program : mendownload ke flash.

Nama-nama ini dapat anda ganti sesukanya. Contoh format penulisan makefile adalah sebagai berikut :

#----------------------
all :
bla...bla...bla...

#----------------------
clean :
bla...bla...bla...

#----------------------
program:
bla...bla...bla...


Cara memanggilnya dapat dilihat pada artikel yang berjudul Men-download ke flash. Pada artikel tersebut dicontohkan cara memanggil proses program. Untuk memanggil proses all dan clean dilakukan dengan cara yang serupa dengan mengganti nama program dengan all atau clean.

Thursday, July 31, 2008

Cara mendownload file bin ke flash dengan OpenOCD

Sebelumnya anda harus membaca : Using Open Source Tools for AT91SAM7S Cross Development revision C.
Ternyata hanya dibutuhkan 3 file untuk mendownload file bin :
Misal saya hendah mendownload E:/Workspace/usb/bin/main-flash.bin, menggunakan Eclipse dan Olimex ARM-USB-OCD, maka yang dibutuhkan adalah


1. E:/Workspace/usb/bin/main-flash.bin


2.Makefile, berisi text :
# specify OpenOCD executable
OPENOCD = 'c:/Program Files/openocd-2007re204/bin/'openocd-ftd2xx.exe
# specify OpenOCD configuration file
OPENOCD_CFG = 'c:/Program Files/openocd-2007re204/bin/'at91sam7s256-armusbocd-flash-program.cfg
# program the AT91SAM7S256 internal flash memory
program:
$(OPENOCD) -f $(OPENOCD_CFG) # program the onchip FLASH here

3. Script.ocd, berisi text :

wait_halt # halt the processor and wait
armv4_5 core_state arm # select the core state
mww 0xffffff60 0x00320100 # set flash wait state (AT91C_MC_FMR)
mww 0xfffffd44 0xa0008000 # watchdog disable (AT91C_WDTC_WDMR)
mww 0xfffffc20 0xa0000601 # enable main oscillator (AT91C_PMC_MOR)
wait 100 # wait 100 ms
mww 0xfffffc2c 0x00480a0e # set PLL register (AT91C_PMC_PLLR)
wait 200 # wait 200 ms
mww 0xfffffc30 0x7 # set master clock to PLL (AT91C_PMC_MCKR)
wait 100 # wait 100 ms
mww 0xfffffd08 0xa5000401 # enable user reset AT91C_RSTC_RMR
flash write 0 E:/Workspace/usb/bin/main-flash.bin 0x0 # program the onchip flash
reset # reset processor
shutdown # stop OpenOCD

Meng-upload SAM-BA dari controller ke PC



Terkadang at91sam7-pxxx board tidak berhasil melakukan booting dari SAM-BA. Kita juga tidak yakin apakah SAM-BA memang sudah terinstall. Walau demikian, JTAG masih berjalan dengan baik. Maka, untuk lebih memastikan SAM-BA, kita download SAM-BA melalui JTAG. Tetapi, sebelumnya kita harus memiliki file bin SAM-BA itu. Caranya? Jangan sia-siakan kesempatan, pada saat SAM-BA berjalan dengan baik, upload dari controller.
Step 1 :

Step 2:

Wednesday, July 30, 2008

Really what the... (part2) SAM-BA

Suatu hari saya coba lakukan SAM-BA system recovery procedure. Setelah saya tancapkan kabel USB, PC segera mengenali driver dari atmel. SAM-BApun dapat mengenalinya.

Karena belum terbiasa menggunakan SAM-BA saya tidak sengaja klik erase all flash->execute. Maka hilanglah SAM-BA dari flash. Sejak saat itu tidak pernah berhasil merecovery. Berbagai literatur dan tanya jawab sudah saya baca, dan coba-coba beberapa haripun sudah saya jalani, termasuk melepas kapasitor kristal 1o pf yang terpasang pada kristal. Hasilnya nihil.

Entah bagaimana penjelasannya, ketika jumper TST dalam keadaan terpasang, tidak sengaja saya download program LED contoh dari atmel melalui OpenOCD - JTAG. Kemudian saya cek kontroler tidak bekerja. Saya berfikir jangan-jangan gara-gara kapasitor kristal diunsolder. Selidik punya selidik, ternyata jumper TST sedang terpasang.

Maka power saya matikan untuk melepas jumper TST, Setelah power saya hidupkan lagi, kemudian saya tancapkan kabel USB, terdengarlah bunyi "BEEP". Saya buka SAM-BA ahirnya terdekteksilah board saya itu.

Berikutnya saya coba lagi melakukan system recovery sesuai dengan prosedure standar. Hasilnya valid.

Pertanyaannya :
1. apakah penyebabnya memang karena kelebihan kapasitor pada kristal?
2.chip atmel ini memang tidak stabil, seperti yang dikatakan beberapa pengguna.

Setelah beberapa kali coba macam-macam program, saya berkesimpulan bahwa : kegagalan atmel board (dlm hal ini at91sam7s64) selalu yang berhubungan dengan penggunaan fitur USB pada atmel termasuk SAM-BA. Sebab jika flash didownload dengan program lain yang tidak menggunakan fitur USB atmel, program jalan dengan normal (walau kadang-kadang tidak juga). Penyebab utama menurut saya adalah clocknya tidak sinkron dengan clock USB. Penjelasan lengkapnya saya belum tahu.

Suatu saat tiba-tiba fitur USB termasuk SAM-BA bisa digunakan. Barangkali jika controllernya sudah cukup panas..bisa bekerja dengan baik. Brati butuh dipanasi? kyk mobil aja