If you can't read please download the document
Upload
sugeng-widodo
View
1.740
Download
0
Embed Size (px)
Citation preview
2. eCosadalah sebuahembedded real time kernelyang lengkap eCostidak sepertiLinuxatauMS Windowsyang mempunyaiuser interfacesebagai media interaksi dengan pemakai dimana pemakai dapat menjalankan aplikasi yang diinginkan Aplikasi yang berjalan dieCosharus dilingkingdengan kerneleCoskemudian diburningkeboot ROMsupaya dapat berfungsi 3. Tools apa saja yang diperlukan ???
4.
Cygwinuntuk developer yang menggunakan MS Windows sebagai host , bisa download langsung install dari cygwin.com : http://cygwin.com/setup.exe 5. Proses Instalasi ......
6. ConfiguringeCos command line :ecosconfig gui :configtool 7. Workflow selecttemplate addingpackage editing configuration buildtree buildlibrary buildtest 8. ecosconfig listingmodul : ecosconfig --srcdir=/usr/local/ecos/ecos-rep/packages/ list selecttemplate: ecosconfig --srcdir=/usr/local/ecos/ecos-rep/packages/ newsparc_leon3 net addingpackage: ecosconfig --srcdir=/usr/local/ecos/ecos-rep/packages/ addCYGPKG_DEVS_ETH_SPARC_LEON3 ecosconfig --srcdir=/usr/local/ecos/ecos-rep/packages/ addCYGPKG_DEVS_ETH_SMSC_LAN91CXX checkingconfig : ecosconfig --srcdir=/usr/local/ecos/ecos-rep/packages/ check 9. ecosconfig buildtree: ecosconfig --srcdir=/usr/local/ecos/ecos-rep/packages/ tree buildlibrary: make maketest: make test that's it 10. configtool selecttemplate 11. configtool addingpackage 12. configtool editconfig 13. configtool last three buildlib buildtest make buildtree 14. http://ecos.sourceware.org/docs-latest/user-guide/ecos-user-guide.html drill down deeper 15. AplikasieCos 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 (;;) { } } 16. Buildingaplikasi eCos jalankan :make INSTALL_DIR=/path/to/ecos/install copy makefile dari example dan edit sesuai dengan aplikasi kita /path/to/ecos/installadalah direktori dimana ecos library berada yang dihasilkan pada waktu build tree 17. Fitur eCos thread counter clock alarm mutex condition variable semaphore mailboxes flag interrupt handling 18. Thread prepare create control terminate 19. Yang harus disiapkan entryfunction : void thread_entry_function(cyg_addrword_t data) stackallocation : static unsigned charmystack[CYGNUM_HAL_STACK_SIZE_MINIMUM]; prioritylevel #define MYPRIORITY10 threadhandle cyg_handle_t threadhandle; threadstructure cyg_thread threadstructure; 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) fungsicyg_thread_createakan menginisialisasi sebuah thread dalam kondisisuspendbukan run. Supaya thread berjalan aplikasi harus memanggilcyg_thread_resume prototype : cyg_thread_resume(cyg_handle_t handle) 21. contoh : cyg_thread_create(MYPRIORITY, &thread_entry_function,&entry_data, MYTHREAD, mystack,CYGNUM_HAL_STACK_SIZE_MINIMUM,&threadhandle, &threadstructure); cyg_thread_resume(threadhandle); 22. Control
23. Termination
24. Flag Flagadalah binary event yang statusnya hanya set atau unset Semaphoreadalah conting event yang statusnya akan selalu bertambah setiap di-post dan berkurang setiap ada thread yang menunggu. thread yang menungguflagakan segera return apabila flag bersangkutanberstatus set , sementara thread yang menunggusemaphoreakan langsung return setiap semaphore mempunyainilai lebih dari noldan akan mengurangi nilai semaphore 25. Inisialisasi void cyg_flag_init(cyg_flag_t* flag) Penghapusan void cyg_flag_destroy(cyg_flag_t* flag) Manipulasi flag setbit tertentu dari flag : operasi OR void cyg_flag_setbits(cyg_flag_t* flag, cyg_flag_value_t value) clearbit tertentu dari flag :void cyg_flag_maskbits(cyg_flag_t* flag, cyg_flag_value_t value) 26. cekkodisi tertentu dari flag cyg_flag_poll(cyg_flag_t* flag,cyg_flag_value_t pattern,cyg_flag_mode_t mode) Tungguflag 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 denganbatas 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 27. Mode Event
28. Mutex denganmutexmemungkinkan suatu threadmenguncipenggunaan suatu resource. thread lain harus menunggu dahulu sampai kuncinya dilepas kembali Live time init lock unlock destroy trylock 29. Prototype
30. Interrupt Handling
live time create attach detach delete 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);
32. Controlling Interrupt
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; } 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 } 35. Topik menarik lainnya filesystem POSIX compatibility Porting Device drivers httpd snmp USB ethernet bridging firewall SSL ssh 36. http://ecos.sourceware.org/docs-latest/ref/ecos-ref.html drill down deeper 37. WiMAX driver packages ecos.db devs eth idwman sparc current cdl include src idwman_drivers.cdl if_idwman.h if_idwman.c current cdl include src leon3_idwman_drivers.cdl devs_eth_sparc_idwman_leon3.inl if_sparc_idwman.c idwman leon3