zoukankan      html  css  js  c++  java
  • 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。此句执行完后,则实现跳转。

  • 相关阅读:
    libevent-2.0.so.5 (安装MEMCACHED问题)
    MySQL的show语句大全
    远程客户端连接MysqL数据库太慢解决方案
    用SQL命令查看Mysql数据库大小
    elasticsearch-head安装及启动
    logstash收集IIS日志
    备份并删除7天以前数据
    shell脚本递归压缩实践
    二目运算符 “->”
    关于int main( int argc, char *argv[] )
  • 原文地址:https://www.cnblogs.com/fozu/p/3618076.html
Copyright © 2011-2022 走看看