Помогите разобраться как работает, любые мысли. Проделал так: в линуксе собрал ubot из исходников именно для платы iMX233-OLinuXino-MAXI без ошибок все ок.
Скопировал все исходники на комп с windows и CodeSourcery eclipse. Нашел файл Start.s который вызывает функцию void board_init_ll(void) а она выполняет
Код
void mxs_common_spl_init(const iomux_cfg_t *iomux_setup, const unsigned int iomux_size)
{
struct mxs_spl_data *data = (struct mxs_spl_data *) ((CONFIG_SYS_TEXT_BASE - sizeof(struct mxs_spl_data)) & ~0xf);
uint8_t bootmode = mxs_get_bootmode_index();
mxs_iomux_setup_multiple_pads(iomux_setup, iomux_size);
mxs_power_init();
mxs_mem_init();
data->mem_dram_size = mxs_mem_get_size();
data->boot_mode_idx = bootmode;
mxs_power_wait_pswitch();
//если сюда добавлю вызов main из maincod там код мигания светодиодом то он после загрузки мигает.
//загружаю командой sb_loader.exe -f MovGen.sb загрузка происходит только в озу ,если выключить и включить питание сетодиод уже не мигает.
}
Все что связано с этими кодом нашел и добавил в проект.
Скомпилировал ошибок нет
Цитата
**** Build of configuration Release for project MovGen ****
cs-make all
mkdir .\output
arm-none-eabi-gcc -c -Wvolatile-register-var -mcpu=arm926ej-s -O0 -Wall -I.\include -I\include -D__ASSEMBLY__ -o .\src\Start.o .\src\Start.S
arm-none-eabi-gcc -c -Wvolatile-register-var -mcpu=arm926ej-s -O0 -Wall -I.\include -I\include -o .\src\Spl_Boot.o .\src\Spl_Boot.c
arm-none-eabi-gcc -c -Wvolatile-register-var -mcpu=arm926ej-s -O0 -Wall -I.\include -I\include -o .\src\Spl_Mem_Init.o .\src\Spl_Mem_Init.c
arm-none-eabi-gcc -c -Wvolatile-register-var -mcpu=arm926ej-s -O0 -Wall -I.\include -I\include -o .\src\Misc.o .\src\Misc.c
arm-none-eabi-gcc -c -Wvolatile-register-var -mcpu=arm926ej-s -O0 -Wall -I.\include -I\include -o .\src\Timer.o .\src\Timer.c
arm-none-eabi-gcc -c -Wvolatile-register-var -mcpu=arm926ej-s -O0 -Wall -I.\include -I\include -o .\src\Memsize.o .\src\Memsize.c
arm-none-eabi-gcc -c -Wvolatile-register-var -mcpu=arm926ej-s -O0 -Wall -I.\include -I\include -o .\src\Iomux.o .\src\Iomux.c
arm-none-eabi-gcc -c -Wvolatile-register-var -mcpu=arm926ej-s -O0 -Wall -I.\include -I\include -o .\src\Mxs_gpio.o .\src\Mxs_gpio.c
arm-none-eabi-gcc -c -Wvolatile-register-var -mcpu=arm926ej-s -O0 -Wall -I.\include -I\include -o .\src\Spl_Power_Init.o .\src\Spl_Power_Init.c
arm-none-eabi-gcc -c -Wvolatile-register-var -mcpu=arm926ej-s -O0 -Wall -I.\include -I\include -o .\src\Hang.o .\src\Hang.c
arm-none-eabi-gcc -c -Wvolatile-register-var -mcpu=arm926ej-s -O0 -Wall -I.\include -I\include -o .\src\Spl_Lradc_Init.o .\src\Spl_Lradc_Init.c
arm-none-eabi-gcc -c -Wvolatile-register-var -mcpu=arm926ej-s -O0 -Wall -I.\include -I\include -o .\src\MainCod.o .\src\MainCod.c
arm-none-eabi-cpp -P -DBASE_ADDR=0x00002000 -o .\output\MovGen.ld .\src\MovGen.ld.in
arm-none-eabi-ld -o .\output\MovGen.elf .\src\Start.o .\src\Spl_Boot.o .\src\Spl_Mem_Init.o .\src\Misc.o .\src\Timer.o .\src\Memsize.o .\src\Iomux.o .\src\Mxs_gpio.o .\src\Spl_Power_Init.o .\src\Hang.o .\src\Spl_Lradc_Init.o .\src\MainCod.o --allow-multiple-definition -static -T .\output\MovGen.ld -Lc:/bin/../lib/gcc/arm-none-eabi/4.8.1/ -u,vfprintf -lgcc
arm-none-eabi-nm -n .\output\MovGen.elf > .\output\MovGen.elf.map
arm-none-eabi-objcopy -R -S -O binary -R .note -R .note.gnu.build-id -R .comment .\output\MovGen.elf .\output\MovGen.bin
./elftosb -V -z -c MovGen.db -o .\output\MovGen.sb
Boot Section 0x00000000:
LOAD | adr=0x00000000 | len=0x00003860 | crc=0x774c1b06 | flg=0x00000000
LOAD | adr=0x00003860 | len=0x000003f8 | crc=0x4b86a49c | flg=0x00000000
LOAD | adr=0x00003c58 | len=0x000000a4 | crc=0xfe426c8f | flg=0x00000000
FILL | adr=0x00003cfc | len=0x00000004 | ptn=0x00000000
JUMP | adr=0x000000c0 | arg=0x00000000 | flg=0x00000000
**** Build Finished ****
Появилось два предупреждения об не используемых функциях
Description Resource Path Location Type
Unused static function 'time_to_tick' Timer.c /MovGen/MovGen/src line 61 Code Analysis Problem
Unused static function 'us_to_tick' Timer.c /MovGen/MovGen/src line 67 Code Analysis Problem
Если кто понимает как это работает объясните пожалуйста.
Где то должна быть точка входа для маин, или как то переход на адресс на какой то с которого начнется выолнение кода?