Table of Contents
eCos
eCos (embedded Configurable operating system) is an open source, royalty-free, real-time operating system intended for embedded systems and applications which need only one process with multiple threads. For more information look at Wikipedia or eCos homepage.
Plese help me with eCos testing and developing new eCos drivers. Patches are gratefully welcome.
Thanks, Michal Simek
How to compile eCos
- choose build→templates
- choose your board – the name for reference board corresponds with table at reference design page
- choose package net for eCos, network support
- choose proper location for your ecos project
sw/user-project
folder is used for this purpose
- check your platform settings
- in this reference design, you have to disable GPIO_2 periphery because it implements system reset functionality
- build your eCos Build→library
- check your build output
- if you have any problem with compilation, check your setting or contact me
- your project folder contain some folders and file
ecos_install
ecos_build
ecos_mlt
ecos.ecc
– project settings
Problems
Unsupported fatal-warnings
- find CYGPKG_INFRA_LDFLAGS_ADD option and remove this option from your setting
cdl_option CYGPKG_INFRA_LDFLAGS_ADD { # Flavor: data user_value -Wl # value_source user # Default value: -Wl,--fatal-warnings };
No build directory
make: *** /home/projects/ecos/sw/projects/RedBoot-gdb/redboot1_build: No such file or directory. Stop.
- Solution: Build→Generate build tree (CTRL+F3)
- this re-creates folder structure in your project again
Know limitation
- based on old source code - I have updated version but there is issue with eCos, RedBoot work well
- weak driver support
- vectors are placed by linker script directly to BRAM which break BIN file loading
- CPU without MSR instruction is not handled correctly
- weak optimalization on Microblaze version
- based on older ecos version → update to latest version
- acsupport/config.sub - missing Microblaze architecture
- test, test, test
- do not use printf in your application, this cased system crash, you can use diag_printf →seems that problem is with malloc or in serial driver
- cpu handling is not clear, for example parameter –mcpu is filled from generic platfrom not from cpu
- currentry is supported only one version of MB but this is base support which could be used for higher version