rk3288的固件刷写
来源:互联网 发布:mac安装adobe 编辑:程序博客网 时间:2024/05/17 03:00
整体可以参考http://wiki.t-firefly.com/index.php/Firefly-RK3288的linux开发
固件刷写通过upgrade_tool刷写,也可以rkflashkit 也可以rkflashtool
http://dl.radxa.com/rock/tools/linux/
刷写工具 uboot kernel可以从
https://github.com/linux-rockchip (这里都是源码)
下载。
对于uboot。瑞芯微使用了自定义的格式。需要对u-boot.bin和一些初始化ddr的bin等等进行合并产生upgrade_tool可以识别的bin文件才可以写。
对于其他的好像是没有要求的。
uboot合并的代码在tools/boot_merger.c中。
sudo ./upgrade_tool
选择合适的rockcusb设备。
ul rk3288uboot.bin
执行下载完成。
通过使用DI命令可以下载不同的分区文件到EMMC当中
支持 -s -k -b -r -p
-s(system分区)、-k(kernel分区)、-b(boot分区)、-r(recovery分区) -p(parameter文件)和-m(misc??分区)
设备已烧录过 parameter 情况下,烧写单个分区镜像命令:
di –s system.img
设备未烧录过 parameter 情况下,烧写单个分区镜像命令:
di –p,–s system.img parameter
设备已烧录过 parameter 情况下,烧写多个分区镜像命令:
di –s,-k system.img,kernel.img
采取命令行指定rootfs 就是在CMDLINE中添加 root=xxxx
root=/dev/block/mtd/by-name/linuxroot # 名为 "linuxroot" 的 nand 分区root=/dev/mmcblk0p1 # TF 卡的第一个分区root=/dev/sda1 # U 盘或 USB 硬盘的第一个分区root=LABEL=linuxroot # 卷标为 "linuxroot" 的分区,可以是任一存储设备
这样必须创建一个名字是liuxroot的ext4文件
如果是自己创建一个ext4文件。可以根据下面的步骤来
dd if=/dev/zero of=linuxroot.img bs=1M count=1024# 格式化成 ext4 文件系统格式,卷标为 linuxrootmkfs.ext4 -F -L linuxroot linuxroot.img挂载,拷贝数据,然后卸载:mount -o loop linuxroot.img /optcp -a /mnt/ubuntu/ /opt/umount /opt
如果是已经做好的卷标,需要修改或者查看可以使用e2label命令
查看 e2label device
修改 e2label device labelname
对于rk3288 flash的固件。RK3288UbootLoader_V2.19.01.bin 烧写到0地址。parameter也是烧写到0地址。这不是冲突了吗?
实际上 烧写RK3288UbootLoader_V2.19.01是烧写到 pba的0地址。
parameter和其他的固件都是StorageWriteLba烧写到LBA的0地址。
以下理解纯属于个人的理解,如果有错误请指正
对于emmc。有多个分区,有两个boot分区。和其他的用户分区USR。
比如boot1 boot2 usr分区。
写boot1的0地址和boot2的0地址 和usr的0地址都是不同的。通过修改emmc的控制寄存器的某个bit位置达到 写不同的分区,每个分区的地址都是独立的。
形式如下
WriteLba(offset,num,buf)
{
setCtrlReg(boot1分区)
write(0,num,buf)
}
WritePba(offset,num,buf)
{
setCtrlReg(boot2分区)
write(0,num,buf)
}
写不同的地址
但是对于rk3288还有另外一种形式。那就是不使用boot1 boot2分区。而是将USR分区分成几块区域来操作。通过增加一定量的偏移来实现不同的操作。
比如
WriteLba(offset,num,buf)
{
write(0+LBAOFFSET,num,buf)
}
WritePba(offset,num,buf)
{
write(0+PBAOFFSET,num,buf)}
按照源码来看。写LBA的时候
iret = SDM_Write(ChipSel, LBA + gSdCardInfoTbl[ChipSel].FwPartOffset, nSec, pbuf);
增加了一个gSdCardInfoTbl[ChipSel].FwPartOffset 这个值是8192.
所以是保留了8192个扇区 8192*512字节=4MB
写 PBA的时候
PBA = PBA + SD_CARD_BOOT_PART_OFFSET;
SD_CARD_BOOT_PART_OFFSET=64 。也就是保留了64*512为32kb
pba开始 LBA开始
0-32KB-----------4MB-----------------------------
[[ 整个USR分区 ]]
- rk3288的固件刷写
- RK3288的gpio设置
- rk3288的JTAG
- rk3288
- RK3288
- 修改RK3288-PopMetal的printk的波特率
- RK3288 make otapackage 出错的问题
- rk3288之释放打印log的串口
- RK3288的几种USB模式
- PopMetal—基于RK3288的开源硬件平台
- rk3288的SDK修复cm3218光敏驱动bug
- RK3288开发板PopMetal上的GPIO驱动实例
- RK3288开发板PopMetal上的GPIO驱动实例
- [RK3288][Android6.0] USB UVC Camera 功能支持的添加
- [RK3288][Android6.0] 调试笔记 --- 普通串口的添加
- [RK3288][Android6.0] 调试笔记 --- 调试串口的更换
- rk3288开发板的shell方式操作底层GPIO
- rk3288对于parameter参数文件的解析处理
- 【C语言简单说】二十一:双重指针基础 (完结)
- Excel转XML
- NXP PN7150高性能全兼容NFC控制器解决方案
- SSL/TLS协议运行机制的概述
- 简单的java的导出excel的方法
- rk3288的固件刷写
- POJ 3302 Subsequence G++
- iOS沙盒机制
- idea 使用maven搭建SpringMVC报错
- Git 常用命令
- 指定位置下搜索文件(Python)
- 卷积神经网络(CNNs / ConvNets) 二
- 双远心镜头原理及选型方法(二)
- android应用开发-从设计到实现 2-1 设计原理