全志F1C100S的BROM研究
全志f1c100s是个性价比很高的芯片,但是对一般人不太友好的是它的资料开放的太少了。
网上找不到完整版的用户手册,只能从有限的手册文档和参考代码旁敲侧击,反向猜测。
关于它的BROM网上的手册内容很少。
手册上只有短短3句话:
具体怎么个启动流程,完全没有描述。
但是从网上的代码和开发板资料来看,它启动是按照顺序自动选择。
我用的开发板只有SPI FLASH,它是先从SPI NOR FLASH启动,无法读到有效的SPL,则进入USB下载模式。
而进入USB模式的按键,其实就是把SPI的片选拉低,让它无法读FLASH内的数据,从而进入USB模式。
USB下载模式官方提供一个sunxi-fel.exe的工具,很方便,它支持下载image到RAM,同时也支持直接下载到SPI-FLASH,还能读回数据。
如何判断SPL的有效性?
文档没有描述,也是通过参考代码,代到线索。
启动文件是这样写的,生成的BIN头部必须包含下面的内容。
;/* Boot head information for BROM booting */
BROM_BHI B Reset_HandlerDCB "eGON.BT0"DCD 0, 0x4000DCB 'S', 'P', 'L', 2DCD 0, 0DCD 0, 0, 0, 0, 0, 0, 0, 0DCD 0, 0, 0, 0, 0, 0, 0, 0
编译生成的SPL.bin内容如下格式:
除了编译生成的文件头信息外,还需要后期修改如下内容:
偏移000C:此SPL.bin的校验,用mksunxi.exe生成。
偏移0010:此SPL.bin的长度,必须256字节对齐。
SPL是在哪里运行的?
我们怎么确定SPL的运行环境?
文档也是没有任何描述。
下面文档的内存映射表:
BROM在0地址有32KB,内部SRAM在0x10000有40KB。
那事实真的如此吗?
只能通过写代码进行验证,我们的SPL是被加载到了0地址,在0地址运行。
而我们能使用的SRAM空间,也不在0x10000这个地址。
实际上芯片内部的SRAM空间是在0x0000 - 0x9000,一共有36KB。
后来还发现0xB000 - 0xB600还有一小段可以使用的SRAM。
在启动时,我们的SPL程序运行地0地址,可以使用内部SRAM用做栈空间,它负责初始化CPU时钟和SDRAM,并负责加载uboot或者其它程序。
另外此时,IRQ,FIQ,MMU都是关闭状态。
全志F1C100S的BROM研究相关推荐
- 【目录】全志F1C100S/F1C200S学习笔记
全志F1C100S/F1C200S学习笔记目录 全志F1C100S/F1C200S学习笔记(1)--基础简介及资料 全志F1C100S/F1C200S学习笔记(2)--TF卡分区及系统构建烧录 全志F ...
- 基于荔枝派Lichee Nano(全志f1c100s)的kernel移植(二)
基于荔枝派Lichee Nano(全志f1c100s)的kernel移植(二) 1.获取源代码 2.linux内核修改dts设备树文件 3.内核配置修改 3.1.使用命令进入配置界面 3.2.支持jf ...
- 玩转RT-Thread之荔枝派Nano(全志F1C100S) 新手上路
玩转RT-Thread之荔枝派Nano(全志F1C100S) 一.新手上路 --作者:燕十三(flyingcys) blog:http://blog.csdn.net/flyingcys --荔枝派n ...
- 全志F1C100s主线linux入坑记录 (6)音视频播放(视频播放软解)
音视频播放(视频播放软解) 百度网站 文章目录 音视频播放(视频播放软解) 一.音频播放 1.声卡驱移动植入 (1)下载安装声卡补丁 (2)配置声卡 (3)linux内核编译烧录 (4)使用声卡 二. ...
- 基于荔枝派Lichee Nano(全志f1c100s)的rootfs移植(三)
基于荔枝派Lichee Nano(全志f1c100s)的rootfs移植(三) 1.下载Buildroot代码包 2.解压文件,获得源代码 3.配置Buildroot 4.编译 5.生成rootfs. ...
- 荔枝派 Nano 全志 F1C100s 编译运行 Linux 笔记
首先是荔枝派的官方文档,写的不是很细,应当说我们必须明确几点: 出厂时 SPI Flash 自带了一个 U-Boot+Linux Kernel(出厂的时候可能烧过了),可直接拿来用.如果希望自己烧固件 ...
- 全志F1C100S/F1C200S学习笔记(2)——TF/SD卡分区及系统构建烧录
TF卡分区 在TF卡上构建系统之前,需要将TF卡进行分区与格式化: sudo fdisk -l # 首先查看电脑上已插入的TF卡的设备号(一般为 /dev/sdb1,下面以/dev/sdb1为例) s ...
- 荔枝派 Nano 全志 F1C100s 编译运行 Linux ubuntu并升级gcc
首先是荔枝派的官方文档,写的不是很细,应当说我们必须明确几点: 出厂时 SPI Flash 自带了一个 U-Boot+Linux Kernel(出厂的时候可能烧过了),可直接拿来用.如果希望自己烧固件 ...
- 全志F1C100s主线linux入坑记录 (1)linux系统移植
linux系统移植 (基于SD卡启动) 百度网站 文章目录 linux系统移植 (基于SD卡启动) 一.安装gcc交叉编译器 二.Uboot移植 1.下载Uboot 源码 2.配置Uboot 3.编译 ...
- 全志F1C100S/F1C200S学习笔记(1)——基础简介及资料
文章目录 一.芯片概览 二.芯片框图 三.芯片规格 四.资料: 五.仓库: 一.芯片概览 二.芯片框图 三.芯片规格 功能 描述 CPU ARM9 CPU architecture 16KByte D ...
最新文章
- POJ3233不错的矩阵(矩阵套矩阵)
- HDU 2050 折线分割平面
- 华为海思MPP媒体处理软件开发学习(基础)
- 英特尔固态硬盘540s开卡_英特尔Z490主板绝配?技嘉PCIe 3.0 x8固态硬盘测试:6.5GB/s读速...
- formSelects-v4.js 基于Layui的多选解决方案
- c语言如何把变量按位颠倒,求答案,用C语言编程,用户输入一个正整数,把他的各位数字前后颠倒,并输入点到后的结果...
- UML 10 种常见的域建模错误
- 这个大学时代的博客不在维护了,请移步到我的新博客
- Java 安装包下载地址
- HTML5响应式个人简历网站模板
- qq企业邮箱的发送邮件服务器地址,腾讯企业邮箱注册和SMTP发件设置教程
- 高中英语语法(001)-虚拟语气
- 电路中容易混淆的三角形符号
- 图解通信原理与案例分析-1:开篇-通信系统大全与快速概览
- Leetcode 79. 单词搜索(迷宫回溯)
- 数据脱敏,你会了吗(二)
- 量化交易中的资金管理模型分享
- 中国全部专利申请与授权数据
- Web登录使用RSA对密码进行加密解密过程
- 在最大中求最小系列问题(二分)
热门文章
- Gradle从入门到实战 - Groovy基础(by任玉刚)读后笔记
- 2022年4月30号Mysql语句增删改查(CRUB)重在实操。
- 总结的iOS、mac开源项目及库,持续更新。。。。 github排名 https://github.com/trending,github搜索:https://github.com/search
- idea2017 破解版使用
- 计算机打不开sai文件夹,无法运行 SAI2 的解决办法
- maven 常用命令
- 博图可以用c语言编程吗,S7300能用C语言编程吗?
- STM32-ESP8266wifi模块实现
- 小程序 轮播图之自动适应宽高度
- ios人脸照片_基于iOS用CoreImage实现人脸识别