ARM技术论坛
直播中

訾存贵

8年用户 926经验值
私信 关注
[经验]

f1c100s芯片介绍

基本信息
2.jpg 功能框图
典型应用
  • F1C100s的内核是 ARM926EJ-S ,ARMv5架构,有MMU,没有硬件FPU,主频默认为408MHz;
  • F1C100s内置32MB DDR1内存;
  • F1C200s是F1C100s的兄弟型号,其它特性都相同,内存容量翻倍为64MB;
启动过程
1、上电后, f1c100s内部 BROM (芯片内置,无法擦除) 启动;
2、首先检查 SD0 有没有插卡, 如果有插卡就读卡 8k偏移数据,是否是合法的启动数据, 如果是BROM 引导结束, 否则进入下一步;
3、检测SPI0 NOR FLASH(W25QXXX, MX25LXXX) 是否存在, 是否有合法的启动数据, 如果是BROM 引导结束, 否则进入下一步;
4、检测SPI0 NAND FLASH 是否存在, 是否有合法的启动数据, 如果是BROM 引导结束, 否则进入下一步;
5、因为找不到任何可以引导的介质, 系统进入usb fel 模式, 可以用USB烧录了。
对于F1C100s而言启动时寻找用户程序的位置顺序如下:
  • SDC0接口(PF0~PF5)上的SD(TF)卡;
  • SPI0接口(PC0~PC3)上的Nor Flash;
  • SPI0接口(PC0~PC3)上的Nand Flash;
    对于SD(TF)卡而言在它上面的数据存储布局通常如下:


2.jpg

上面参数中SPL从8K位置开始不能动(这是由BROM决定的);文件系统可以根据需要来分区,boot分区在前,通常为FAT格式。
编译后得到 u-boot-sunxi-with-spl.bin 这个文件会拼合 spl 和 u-boot ,直接把这个文件写入到 8KB 开始的位置就行了。
对于SPI Flash而言其实和SD(TF)卡而言差不多,最关键的就是将 u-boot-sunxi-with-spl.bin 文件放在头部,即从0位置开始写入;其它内容根据需求而设置,只要对应的调整 u-boot 读取启动内核时相关位置参数就行。
需要注意的是默认情况下SPI Flash最大支持16M,更大就需要在程序中设置bank了。
fel模式
上文中可以了解到F1C100s要是启动外部程序均失败的话就会进入FEL模式,用户可以通过USB和芯片进行交互 。在FEL模式你可以直接运行 u-boot 和 linux 等,也可以将数据写入spiflash中(可以用作烧录固件到设备中)。
FEL模式其实也就是BROM上的一段程序,可以在 u-boot 命令行中使用 go 0xffff0020 跳转进入。另外也可以通过在SD(TF)卡写入下面数据来通过SD(TF)卡启动跳转:
2.jpg



原作者:守勤

更多回帖

发帖
×
20
完善资料,
赚取积分