Slideshare.net (beta)

 

All comments

Add a comment on Slide 1

If you have a SlideShare account, login to comment; else you can comment as a guest


Showing 1-50 of 0 (more)

Workshop On eCos

From sueng, 5 months ago

560 views  |  0 comments  |  0 favorites  |  14 downloads  |  1 embed (Stats)
 
 
 

Groups / Events

 

 
Embed
options

More Info

This slideshow is Public
Total Views: 560
on Slideshare: 531
from embeds: 29

Slideshow transcript

Slide 1: Workshop On eCos R. VLSI - LabTek VIII STEI ITB , 19 Maret 2008

Slide 2: eCos adalah sebuah embedded real time kernel yang lengkap eCos tidak seperti Linux atau MS Windows yang mempunyai user interface sebagai media interaksi dengan pemakai dimana pemakai dapat menjalankan aplikasi yang diinginkan Aplikasi yang berjalan di eCos harus di lingking dengan kernel eCos kemudian di burning ke boot ROM supaya dapat berfungsi

Slide 3: Tools apa saja yang diperlukan ??? Source code eCos , bisa didapatkan dari : cvs dari sourceware.org : http://ecos.sourceware.org/anoncvs.html running script dari sourceware.org ftp://ecos.sourceware.org/pub/ecos/ecos-install.tcl sh ecos-install.tcl download dari ecoscentric : http://ecoscentric.com/devzone/snapshots.shtml download dari gaisler : ftp://gaisler.com/gaisler.com/ecos/src/

Slide 4: Configuration Tool : download dari ecoscentric : http://ecoscentric.com/devzone/configtool.shtml download dari gaisler : ftp://gaisler.com/gaisler.com/ecos/bin/configtool/ Cross Compiler : download dari gaisler : ftp://gaisler.com/gaisler.com/bcc/bin/ download dari ecos.sourceware.org : ftp://ecos.sourceware.org/pub/ecos/gnutools Cygwin untuk developer yang menggunakan MS Windows sebagai host , bisa download langsung install dari cygwin.com : http://cygwin.com/setup.exe

Slide 5: Proses Instalasi ...... running script ...... akan mendownload semua kebutuhan sourcecode dan semua tools yang dibutuhkan kemudian melakukan proses compiling untuk host tools (termasuk tools konfigurasi), syarat utamanya adalah ada Tcl dan wget di komputer kita. berlaku baik di windows dan Unix/Linux jika sudah mendownload masing-masing modul ekstrak di lokasi yang diinginkan , jangan lupa menambahkan direktori file-file eksekusi ( seperti cross compiler dan tool konfigurasi) pada environment PATH environment yang perlu ditambahkan juga adalah ECOS_REPOSITORY untuk menunjukkan lokasi dari sourcecode eCos

Slide 6: Configuring eCos command line : ecosconfig gui : configtool

Slide 7: Workflow select template build test adding package build library editing configuration build tree

Slide 8: ecosconfig listing modul : ecosconfig ­­srcdir=/usr/local/ecos/ecos­rep/packages/ list select template : ecosconfig ­­srcdir=/usr/local/ecos/ecos­rep/packages/ new   sparc_leon3 net adding package : ecosconfig ­­srcdir=/usr/local/ecos/ecos­rep/packages/ add   CYGPKG_DEVS_ETH_SPARC_LEON3 ecosconfig ­­srcdir=/usr/local/ecos/ecos­rep/packages/ add   CYGPKG_DEVS_ETH_SMSC_LAN91CXX checking config : ecosconfig ­­srcdir=/usr/local/ecos/ecos­rep/packages/ check

Slide 9: ecosconfig build tree : ecosconfig ­­srcdir=/usr/local/ecos/ecos­rep/packages/ tree build library : make test : make make test that's it

Slide 10: configtool – select template

Slide 11: configtool – adding package

Slide 12: configtool – edit config

Slide 13: configtool – last three build lib build test make build tree

Slide 14: drill down deeper http://ecos.sourceware.org/docs-latest/user-guide/ecos-user-guide.html

Slide 15: Aplikasi eCos void cyg_user_start(void) { cyg_mutex_init(&cliblock); cyg_thread_create(4, simple_program, (cyg_addrword_t) 0, "Thread A", (void *) stack[0], 4096, &simple_threadA, &thread_s[0]); cyg_thread_create(4, simple_program, (cyg_addrword_t) 1, "Thread B", (void *) stack[1], 4096, &simple_threadB, &thread_s[1]); cyg_thread_resume(simple_threadA); cyg_thread_resume(simple_threadB); } void simple_program(cyg_addrword_t data) { for (;;) { } }

Slide 16: Building aplikasi eCos copy makefile dari example dan edit sesuai dengan aplikasi kita jalankan : make INSTALL_DIR=/path/to/ecos/install /path/to/ecos/install adalah direktori dimana ecos library berada yang dihasilkan pada waktu build tree

Slide 17: Fitur eCos flag counter semaphore thread clock alarm mutex condition variable interrupt handling mailboxes

Slide 18: Thread prepare create control terminate

Slide 19: Yang harus disiapkan entry function : void thread_entry_function(cyg_addrword_t data) stack allocation : static unsigned char  mystack[CYGNUM_HAL_STACK_SIZE_MINIMUM]; thread handle cyg_handle_t threadhandle; thread structure cyg_thread threadstructure; priority level #define MYPRIORITY  10

Slide 20: Creation prototype : cyg_thread_create(cyg_addrword_t sched_info,  cyg_thread_entry_t* entry,  cyg_addrword_t entry_data,  char* name, void* stack_base,  cyg_ucount32 stack_size,  cyg_handle_t* handle, cyg_thread* thread) fungsi cyg_thread_create akan menginisialisasi sebuah thread dalam kondisi suspend bukan run. Supaya thread berjalan aplikasi harus memanggil cyg_thread_resume prototype : cyg_thread_resume(cyg_handle_t handle)

Slide 21: contoh : cyg_thread_create(MYPRIORITY, &thread_entry_function,  &entry_data,  “MYTHREAD”, mystack,  CYGNUM_HAL_STACK_SIZE_MINIMUM,  &threadhandle, &threadstructure); cyg_thread_resume(threadhandle);

Slide 22: Control thread state : resume,suspend thread priority thread delay thread release

Slide 23: Termination dari dalam thread void cyg_thread_exit(void) dari luar thread void cyg_thread_kill(cyg_handle_t handle) menghapus alokasi resource cyg_bool cyg_thread_delete(cyg_handle_t handle)

Slide 24: Flag Flag adalah binary event yang statusnya hanya set atau unset Semaphore adalah conting event yang statusnya akan selalu bertambah setiap di-post dan berkurang setiap ada thread yang menunggu. thread yang menunggu flag akan segera return apabila flag bersangkutan berstatus set, sementara thread yang menunggu semaphore akan langsung return setiap semaphore mempunyai nilai lebih dari nol dan akan mengurangi nilai semaphore

Slide 25: Inisialisasi void cyg_flag_init(cyg_flag_t* flag) Penghapusan void cyg_flag_destroy(cyg_flag_t* flag) Manipulasi flag set bit tertentu dari flag : operasi OR void cyg_flag_setbits(cyg_flag_t* flag, cyg_flag_value_t value) clear bit tertentu dari flag : void cyg_flag_maskbits(cyg_flag_t* flag, cyg_flag_value_t value)

Slide 26: cek kodisi tertentu dari flag cyg_flag_poll(cyg_flag_t* flag,    cyg_flag_value_t pattern,    cyg_flag_mode_t mode) Tunggu flag pada kondisi tertentu tanpa batas waktu cyg_flag_wait(cyg_flag_t* flag,    cyg_flag_value_t pattern,    cyg_flag_mode_t mode) Tunggu flag pada kondisi tertentu dengan batas waktu cyg_flag_timed_wait(cyg_flag_t* flag,    cyg_flag_value_t pattern,    cyg_flag_mode_t mode,   cyg_tick_count_t abstime) abstime should be cyg_current_time()+number

Slide 27: Mode Event CYG_FLAG_WAITMODE_AND : semua kondisi harus terpenuhi CYG_FLAG_WAITMODE_OR : salah satu kondisi sudah cukup CYG_FLAG_WAITMODE_CLR : clear semua flag setelah sukses

Slide 28: Mutex dengan mutex memungkinkan suatu thread mengunci penggunaan suatu resource. thread lain harus menunggu dahulu sampai kuncinya dilepas kembali Live time lock init unlock destroy trylock

Slide 29: Prototype void cyg_mutex_init(cyg_mutex_t* mutex); cyg_bool_t cyg_mutex_lock(cyg_mutex_t* mutex); cyg_bool_t cyg_mutex_trylock(cyg_mutex_t* mutex); void cyg_mutex_unlock(cyg_mutex_t* mutex); void cyg_mutex_destroy(cyg_mutex_t* mutex);

Slide 30: Interrupt Handling eCos mengimplementasikan sistem dua lapis penanganan interrupt : ISR : interrupt service rutin yang akan dijalankan segera saat terjadinya hardware interrupt DSR : defer service rutin yang akan dijalankan sesaat setelah thread yang sedang berjalan selesai apabila flag CYG_ISR_CALL_DSR di set saat return dari ISR live time create attach detach delete

Slide 31: ISR creation void cyg_interrupt_create(cyg_vector_t vector,  cyg_priority_t priority, cyg_addrword_t data,  cyg_ISR_t* isr, cyg_DSR_t* dsr,  cyg_handle_t* handle, cyg_interrupt* intr); vector : nomor vektor interrupt priority : prioritas interup data : pointer data yang akan dipassing pada waktu terjadi interrupt boleh diisi NULL isr : pointer ke ISR handler dsr : pointer ke DSR handler handle : handle dari interrupt yang dihasilkan , harus disiapkan intr : struktur data interrupt , harus disiapkan

Slide 32: Controlling Interrupt attach/detach: void cyg_interrupt_attach(cyg_handle_t intr);     void cyg_interrupt_detach(cyg_handle_t intr); global enable/disable : void cyg_interrupt_disable(void);              void cyg_interrupt_enable(void); selektif masking : void cyg_interrupt_mask(cyg_vector_t vector);  void cyg_interrupt_unmask(cyg_vector_t vector);

Slide 33: Template ISR cyg_uint32 isr_function(cyg_vector_t vector, cyg_addrword_t data) {     cyg_bool_t dsr_required = 0;     cyg_interrupt_acknowledge(vectornum);        cyg_interrupt_mask(vectornum);     return dsr_required ?         (CYG_ISR_CALL_DSR | CYG_ISR_HANDLED) :         CYG_ISR_HANDLED; }

Slide 34: Template DSR void dsr_function(cyg_vector_t vector,              cyg_ucount32 count,              cyg_addrword_t data) {    //data access etc    //or transfer to other thread }

Slide 35: Topik menarik lainnya POSIX compatibility filesystem SSL Device drivers Porting httpd USB ssh snmp ethernet bridging firewall

Slide 36: drill down deeper http://ecos.sourceware.org/docs-latest/ref/ecos-ref.html

Slide 37: WiMAX driver packages ecos.db devs eth idwman current cdl idwman_drivers.cdl include sparc if_idwman.h src idwman if_idwman.c leon3 current cdl leon3_idwman_drivers.cdl include src devs_eth_sparc_idwman_leon3.inl if_sparc_idwman.c