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

STM32F103 ucLinux开发之一(BOOT分析及源码)的更多相关文章

  1. STM32F103 ucLinux开发BOOT

    STM32F103 ucLinux开发BOOT STM3210E-EVAL官方开发板主芯片STM32F103ZET6: 片内512K Flash,地址0x0800 0000 ~ 0x0807 FFFF ...

  2. STM32F103 ucLinux开发之四(内核启动后的调试)

    Stm32-uclinux启动后的调试 1.  修改__pfn_to_page使得能够启动 根据STM32F103 ucLinux开发之三(内核启动后不正常)的描述,内核无法启动是选择了平板内存模式后 ...

  3. spring boot 2.0 源码分析(一)

    在学习spring boot 2.0源码之前,我们先利用spring initializr快速地创建一个基本的简单的示例: 1.先从创建示例中的main函数开始读起: package com.exam ...

  4. spring boot 2.0 源码分析(二)

    在上一章学习了spring boot 2.0启动的大概流程以后,今天我们来深挖一下SpringApplication实例变量的run函数. 先把这段run函数的代码贴出来: /** * Run the ...

  5. spring boot 2.0 源码分析(四)

    在上一章的源码分析里,我们知道了spring boot 2.0中的环境是如何区分普通环境和web环境的,以及如何准备运行时环境和应用上下文的,今天我们继续分析一下run函数接下来又做了那些事情.先把r ...

  6. spring boot 2.0 源码分析(三)

    通过上一章的源码分析,我们知道了spring boot里面的listeners到底是什么(META-INF/spring.factories定义的资源的实例),以及它是创建和启动的,今天我们继续深入分 ...

  7. Spring Boot 自动配置 源码分析

    Spring Boot 最大的特点(亮点)就是自动配置 AutoConfiguration 下面,先说一下 @EnableAutoConfiguration ,然后再看源代码,到底自动配置是怎么配置的 ...

  8. 如何分析SpringBoot源码模块及结构?--SpringBoot源码(二)

    注:该源码分析对应SpringBoot版本为2.1.0.RELEASE 1 前言 本篇接 如何搭建自己的SpringBoot源码调试环境?--SpringBoot源码(一). 前面搭建好了自己本地的S ...

  9. 《iOS开发指南》正式出版-源码-样章-目录,欢迎大家提出宝贵意见

    智捷iOS课堂-关东升老师最新作品:<iOS开发指南-从0基础到AppStore上线>正式出版了 iOS架构设计.iOS性能优化.iOS测试驱动.iOS调试.iOS团队协作版本控制.... ...

随机推荐

  1. php获取今日开始时间和结束时间

    $begintime=date("Y-m-d H:i:s",mktime(0,0,0,date('m'),date('d'),date('Y'))); $endtime=date( ...

  2. 使用QQ第三方登录 并在父页面跳转刷新

    <html> <head> <title>QQ登录跳转</title> <script src="http://lib.sinaapp. ...

  3. 排序算法lowb三人组-插入排序

    def insert_sort(li): for i in range(1, len(li)): # i表示摸到的牌的下标 tmp = li[i] # 摸到的牌 j = i - 1 while j & ...

  4. 在vue中安装使用vux

    最近因为的工作的原因在弄vue,从后端弄到前端之前一直用js,现在第一次接触vue感觉还挺有意思的,就是自己太菜了,这个脑子呀....不太够用.....页面设计用了一个叫vux的东西,vux可以提供一 ...

  5. 01_Mac下安装homebrew

    参考:https://jingyan.baidu.com/album/fec7a1e5ec30341190b4e7e5.html?picindex=3 1.在打开的命令行工具中输入如下语句: ruby ...

  6. 139.00.004 Git学习-远程仓库之Github

    参考Github官方HelloWorld入门教程 "有了远程仓库,妈妈再也不用担心我的硬盘了."--Git点读机 本章开始介绍Git的杀手级功能之一(注意是之一,也就是后面还有之二 ...

  7. dialog problem overview

    一 Datasets 1. ubuntu chat corpus: http://daviduthus.org/UCC/2. dialogue  datasets (circa 2005) 二 Tas ...

  8. java通过jxls框架实现导入导出excel

    //使用jxls报表生成工具,把java实体类导出生成 Excel文件或导入 Excel 插入数据库 02 03//读取04 05public class ReadExcel {06 private ...

  9. Newtonsoft.Json code

    序列化 Product product = new Product(); product.ExpiryDate = new DateTime(2008, 12, 28); JsonSerializer ...

  10. UIButton中的**EdgeInsets是做什么用的?

    UIButton中的**EdgeInsets是做什么用的? UIEdgeInsetsMake Creates an edge inset for a button or view.An inset i ...