STM32F103 ucLinux開發之一(BOOT分析及源碼)


STM32F103 ucLinux開發BOOT

STM3210E-EVAL官方開發板
主芯片STM32F103ZET6:

片內512K Flash,地址0x0800 0000 ~ 0x0807 FFFF;

64K RAM,地址0x2000 0000 ~2000 FFFF。

利用其FSMC功能外擴了NorFlash和SRAM:
NorFlash大小16M,地址0x6400 0000 ~ 6500 0000
SRAM大小1M,地址0x6800 0000 ~ 0x6810 0000

 

ST官網已經給出了uCLinux開發的套件,但是提供的BOOT只是個Hex文件,沒有源碼。

看過UBOOT源碼后,明白了BOOT都要做什么事,我在KEIL下編寫了一個超級簡單的BOOT,可以實現到內核的跳轉,並通過

printf函數打印輸出,源碼下載地址:

http://www.pudn.com/downloads611/sourcecode/embedded/detail2490802.html 

 

主要源碼如下:

SystemInit();  //初始化時鍾

FSMC_SRAM_Init(); // SRAM初始化
FSMC_NOR_Init(); // NOR FLASH初始化

USART1_Configuration(USART1_BPS); // RS232配置,串口1作為控制台輸出

setup_start_tag();    //ATAG_CORE
//setup_memory_tags();    //我分析官網的HEX文件,沒有這個ATAG_MEM
setup_commandline_tag(g_strCmdLine);   //ATAG_CMDLINE
setup_end_tag();               //ATAG_NONE

theKernel = (void (*)(int, int, unsigned int))((uint32_t)KernelStartAddrss);  //跳轉地址,片內FLash是0x0800 3000,片外Nor Flash是0x6400 0000
theKernel(0, 2189, ((uint32_t)TagStartAddress));  //分析內核源碼,Tag起始地址應該是0x6800 0100。此句執行完后,則實現跳轉。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM