全志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研究相关推荐

  1. 【目录】全志F1C100S/F1C200S学习笔记

    全志F1C100S/F1C200S学习笔记目录 全志F1C100S/F1C200S学习笔记(1)--基础简介及资料 全志F1C100S/F1C200S学习笔记(2)--TF卡分区及系统构建烧录 全志F ...

  2. 基于荔枝派Lichee Nano(全志f1c100s)的kernel移植(二)

    基于荔枝派Lichee Nano(全志f1c100s)的kernel移植(二) 1.获取源代码 2.linux内核修改dts设备树文件 3.内核配置修改 3.1.使用命令进入配置界面 3.2.支持jf ...

  3. 玩转RT-Thread之荔枝派Nano(全志F1C100S) 新手上路

    玩转RT-Thread之荔枝派Nano(全志F1C100S) 一.新手上路 --作者:燕十三(flyingcys) blog:http://blog.csdn.net/flyingcys --荔枝派n ...

  4. 全志F1C100s主线linux入坑记录 (6)音视频播放(视频播放软解)

    音视频播放(视频播放软解) 百度网站 文章目录 音视频播放(视频播放软解) 一.音频播放 1.声卡驱移动植入 (1)下载安装声卡补丁 (2)配置声卡 (3)linux内核编译烧录 (4)使用声卡 二. ...

  5. 基于荔枝派Lichee Nano(全志f1c100s)的rootfs移植(三)

    基于荔枝派Lichee Nano(全志f1c100s)的rootfs移植(三) 1.下载Buildroot代码包 2.解压文件,获得源代码 3.配置Buildroot 4.编译 5.生成rootfs. ...

  6. 荔枝派 Nano 全志 F1C100s 编译运行 Linux 笔记

    首先是荔枝派的官方文档,写的不是很细,应当说我们必须明确几点: 出厂时 SPI Flash 自带了一个 U-Boot+Linux Kernel(出厂的时候可能烧过了),可直接拿来用.如果希望自己烧固件 ...

  7. 全志F1C100S/F1C200S学习笔记(2)——TF/SD卡分区及系统构建烧录

    TF卡分区 在TF卡上构建系统之前,需要将TF卡进行分区与格式化: sudo fdisk -l # 首先查看电脑上已插入的TF卡的设备号(一般为 /dev/sdb1,下面以/dev/sdb1为例) s ...

  8. 荔枝派 Nano 全志 F1C100s 编译运行 Linux ubuntu并升级gcc

    首先是荔枝派的官方文档,写的不是很细,应当说我们必须明确几点: 出厂时 SPI Flash 自带了一个 U-Boot+Linux Kernel(出厂的时候可能烧过了),可直接拿来用.如果希望自己烧固件 ...

  9. 全志F1C100s主线linux入坑记录 (1)linux系统移植

    linux系统移植 (基于SD卡启动) 百度网站 文章目录 linux系统移植 (基于SD卡启动) 一.安装gcc交叉编译器 二.Uboot移植 1.下载Uboot 源码 2.配置Uboot 3.编译 ...

  10. 全志F1C100S/F1C200S学习笔记(1)——基础简介及资料

    文章目录 一.芯片概览 二.芯片框图 三.芯片规格 四.资料: 五.仓库: 一.芯片概览 二.芯片框图 三.芯片规格 功能 描述 CPU ARM9 CPU architecture 16KByte D ...

最新文章

  1. POJ3233不错的矩阵(矩阵套矩阵)
  2. HDU 2050 折线分割平面
  3. 华为海思MPP媒体处理软件开发学习(基础)
  4. 英特尔固态硬盘540s开卡_英特尔Z490主板绝配?技嘉PCIe 3.0 x8固态硬盘测试:6.5GB/s读速...
  5. formSelects-v4.js 基于Layui的多选解决方案
  6. c语言如何把变量按位颠倒,求答案,用C语言编程,用户输入一个正整数,把他的各位数字前后颠倒,并输入点到后的结果...
  7. UML 10 种常见的域建模错误
  8. 这个大学时代的博客不在维护了,请移步到我的新博客
  9. Java 安装包下载地址
  10. HTML5响应式个人简历网站模板
  11. qq企业邮箱的发送邮件服务器地址,腾讯企业邮箱注册和SMTP发件设置教程
  12. 高中英语语法(001)-虚拟语气
  13. 电路中容易混淆的三角形符号
  14. 图解通信原理与案例分析-1:开篇-通信系统大全与快速概览
  15. Leetcode 79. 单词搜索(迷宫回溯)
  16. 数据脱敏,你会了吗(二)
  17. 量化交易中的资金管理模型分享
  18. 中国全部专利申请与授权数据
  19. Web登录使用RSA对密码进行加密解密过程
  20. 在最大中求最小系列问题(二分)

热门文章

  1. Gradle从入门到实战 - Groovy基础(by任玉刚)读后笔记
  2. 2022年4月30号Mysql语句增删改查(CRUB)重在实操。
  3. 总结的iOS、mac开源项目及库,持续更新。。。。 github排名 https://github.com/trending,github搜索:https://github.com/search
  4. idea2017 破解版使用
  5. 计算机打不开sai文件夹,无法运行 SAI2 的解决办法
  6. maven 常用命令
  7. 博图可以用c语言编程吗,S7300能用C语言编程吗?
  8. STM32-ESP8266wifi模块实现
  9. 小程序 轮播图之自动适应宽高度
  10. ios人脸照片_基于iOS用CoreImage实现人脸识别