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。此句执行完后,则实现跳转。
STM32F103 ucLinux开发之一(BOOT分析及源码)的更多相关文章
- STM32F103 ucLinux开发BOOT
STM32F103 ucLinux开发BOOT STM3210E-EVAL官方开发板主芯片STM32F103ZET6: 片内512K Flash,地址0x0800 0000 ~ 0x0807 FFFF ...
- STM32F103 ucLinux开发之四(内核启动后的调试)
Stm32-uclinux启动后的调试 1. 修改__pfn_to_page使得能够启动 根据STM32F103 ucLinux开发之三(内核启动后不正常)的描述,内核无法启动是选择了平板内存模式后 ...
- spring boot 2.0 源码分析(一)
在学习spring boot 2.0源码之前,我们先利用spring initializr快速地创建一个基本的简单的示例: 1.先从创建示例中的main函数开始读起: package com.exam ...
- spring boot 2.0 源码分析(二)
在上一章学习了spring boot 2.0启动的大概流程以后,今天我们来深挖一下SpringApplication实例变量的run函数. 先把这段run函数的代码贴出来: /** * Run the ...
- spring boot 2.0 源码分析(四)
在上一章的源码分析里,我们知道了spring boot 2.0中的环境是如何区分普通环境和web环境的,以及如何准备运行时环境和应用上下文的,今天我们继续分析一下run函数接下来又做了那些事情.先把r ...
- spring boot 2.0 源码分析(三)
通过上一章的源码分析,我们知道了spring boot里面的listeners到底是什么(META-INF/spring.factories定义的资源的实例),以及它是创建和启动的,今天我们继续深入分 ...
- Spring Boot 自动配置 源码分析
Spring Boot 最大的特点(亮点)就是自动配置 AutoConfiguration 下面,先说一下 @EnableAutoConfiguration ,然后再看源代码,到底自动配置是怎么配置的 ...
- 如何分析SpringBoot源码模块及结构?--SpringBoot源码(二)
注:该源码分析对应SpringBoot版本为2.1.0.RELEASE 1 前言 本篇接 如何搭建自己的SpringBoot源码调试环境?--SpringBoot源码(一). 前面搭建好了自己本地的S ...
- 《iOS开发指南》正式出版-源码-样章-目录,欢迎大家提出宝贵意见
智捷iOS课堂-关东升老师最新作品:<iOS开发指南-从0基础到AppStore上线>正式出版了 iOS架构设计.iOS性能优化.iOS测试驱动.iOS调试.iOS团队协作版本控制.... ...
随机推荐
- vim命令“=”、“d”、“y”的用法(结合光标移动命令,一些场合会非常方便)
vim有许多命令,网上搜有一堆贴子.文章列举出各种功能的命令. 对于“=”.“d”.“y”,我在无意中发现了它们所具有的相同的一些用法,先举以下三个例子: =nG dnG ynG 其中,n为行号.注意 ...
- COGS2216 你猜是不是KMP
第一道自己写的FFT...... 不知为啥这题在网上找不到题解......真是麻烦,害得我推了半天...... 还是写个简要题解吧...... 首先把S和T拆成序列,a~z分别对应成1~26,?是0, ...
- 基于svg.js实现对图形的拖拽、选择和编辑操作
本文主要记录如何使用 svg.js 实现对图形的拖拽,选择,图像渲染及各类形状的绘制操作. 1.关于SVG SVG 是可缩放的矢量图形,使用XML格式定义图像,可以生成对应的DOM节点,便于对单个图形 ...
- sass判断语句
@if判断 @if可一个条件单独使用,也可以和@else结合多条件使用 scss.style css.style 三目判断 语法为:if($condition, $if_true, $if_false ...
- 微信小程序request请求之GET跟POST的区别
1.GET 例子: wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 data: { x: '' , y: '' }, header: { 'content ...
- 建立makefile
一.目的 1.1 熟悉makefile的基本规则,学会建立自己的makefile,通过makefile提高编程效率 1.2 学会通过autotools建立makefile来更好更高效地管理软件项目工程 ...
- Android MediaRecorder实现暂停断点录音功能
基本原理如下:MediaRecorder通过MIC录音,系统没有自带的pause功能,每次暂停录音,都会结束本次的录音.现在本人的设计思路是:MediaRecorder录音暂停时,保存这段所录下的音频 ...
- 【Machine Learning】分类与回归 区别
一.分类与回归的区别 两类监督学习 Classification Regression 分类和回归的区别在于输出变量的类型(而非输入变量). 定性输出称为分类,或者说是离散变量预测(discrete) ...
- Scrum团队开发
Scrum学习心得 什么是scrum Scrum是迭代式增量软件开发过程,通常用于敏捷软件开发.Scrum包括了一系列实践和预定义角色的过程骨架.Scrum中的主要角色包括同项目经理类似的Scrum主 ...
- css属性值语法解读
//margin 形式语法: [ <length> | <percentage> | auto ]{1,4} //合法实例: margin: style /*单值语法 */ 举 ...