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。此句执行完后,则实现跳转。

猜你喜欢

转载自www.cnblogs.com/tianqiang/p/9005464.html