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

  • 相关阅读:
    善用不同语言描述问题
    评黑书《算法艺术与信息学竞赛》
    代码设计的几个基础技巧
    结构和类
    看很多算法书,有个体会就是:算法关我屁事
    看好win8应用商场
    12306 火车订票网站的改进方案(专家讲解)
    有限责任公司章程
    该如何抽象
    财务软件的设计
  • 原文地址:https://www.cnblogs.com/fozu/p/3618076.html
Copyright © 2011-2022 走看看