Running an eCos application on Colibri VF61¶
This chapter will explain how to run the eCos application on the Colibri VF61 Cortex-M core from the Cortex-A core in two ways: either from Linux using MQXBboot
or from U-Boot using TFTP.
Vybrid has three available memory regions:
- OCRAM - 256KB - Default.
- DRAM - 10MB - Available, but needs limiting Linux RAM memory.
- TCML - 32KB - Small. Not recommended.
Note
Out of the 16MB of the DRAM memory in the CPU, 6MB was reserved for enabling the passing of large data blocks between Cortex-A and Cortex-M.
This setting can be changed in the mlt_vybrid_ext_dram.ldi
file located in ecos/packages/hal/cortexm/vybrid/col_vf61/current/include/pkgconf/
, by modifying the DRAM LENGTH
and hal_startup_stack
values (currently 0x9FFFF0
).
U-Boot over TFTP¶
Set up TFTP on your host machine and put the binary to be loaded (for example, hello.bin
) there. Make sure your host machine is connected to the network and you know its IP address.
Configuring U-Boot¶
Note
The memory restriction is mandatory only if DRAM is used to run eCos. See Startup memory choice for details.
Connect the module to the network with an Ethernet cable, power it on. Enter U-Boot and then use the following command sequence:
dhcp # set module IP address
set memargs mem=240M # restrict Linux memory space
set serverip xxx.xxx.xxx.xxx # set TFTP server address
save # save the configuration
Running from U-Boot¶
The application can then be run over TFTP with the tftp
command.
The two other mw
commands will set the entry point and turn on the clocks, respectively.
OCRAM is recommended as default, but you may refer to Startup memory choice for information on what memory to use and how to get eCos to run from it.
OCRAM (default)
tftp 0x3f000400 hello.bin
mw.l 0x4006e028 0x1f000411
mw.l 0x4006b08c 0x00015a5a
DRAM
tftp 0x8f000400 hello.bin
mw.l 0x4006e028 0x0f000411
mw.l 0x4006b08c 0x00015a5a
TCML
tftp 0x1f800400 hello.bin
mw.l 0x4006e028 0x1f800411
mw.l 0x4006b08c 0x00015a5a
Linux over MQXBoot¶
Requirements¶
The following have to be present on the Cortex-A Linux (apart from the eCos binary) to make this method possible:
mcc.ko
kernel modulemqxboot
binary
Running from MQXBoot¶
The command to run the binary depends on the memory we want to use. OCRAM is recommended as default, but you may refer to Startup memory choice for information on what memory to use and how to get eCos to run from it.
Loading to OCRAM (default)
mqxboot hello.bin 0x3f000400 0x1f000411
Loading to DRAM
mqxboot hello.bin 0x8f000400 0x0f000411
Loading to TCML
mqxboot hello.bin 0x1f800400 0x1f800411