122.rk3399 uboot(2017.09) 源码分析2-initf_dm(2024-09-09) 本文主要是dm_init_and_scan函数的分析,这个内容比较复杂,我也是第一次阅读,错误之处在所难免,请多指教。uboot的dm框架需要了解一下,看了几行代码发现看不下去了,有点深啊。我慢慢琢磨一下。
121.rk3399 uboot(2017.09) 源码分析1(2024-09-05) 参考源码 :硬件平台:rk3399辅助工具:linux虚拟机,sourceinsight4,文件浏览器(可以使用samba访问),ultraeidt(查看bin文件比较方便)说明:1.本文是源码分析的第一篇,但是不涉及汇编部分的分析。(汇编部分自行百度)2.由于作者水平有限,错误之处在所难免,请高手及时指正,不胜感激。其实也算是第一次阅读源码,肯定还是有很多的局限,请包含。
120.龙芯2k1000-qt(19)-做了一个qt测试界面 以下是windows下的截图,大概功能就是这样吧,能想到的都想了一遍。主要接口和性能测试,主要针对的是龙芯2k1000.cpu的温度和频率采集不到,就没有放了。
119.龙芯2k1000-pmon(18)-全自动安装linux系统 由它完成: /home/dazhi/program_pmon_ls2k1000 -e /home/dazhi/normal_env.bin就是把append再次还原再次启动,就会引导硬盘中的文件系统了。
118.龙芯2k1000-pmon(17)-制作ramdisk 目前手上这个设备装系统不容易,总是需要借助虚拟机才能实现。对生产就不太那么友好,能否不用虚拟机就能装Linux系统呢?主要是文件系统的问题需要解决,平时我们一般是用nfs挂载后,然后对硬盘格式化,之后再把文件系统解压到硬盘中,这个过程就必须借助虚拟机,而且还要求虚拟机的nfs和网络必须正常好用。这次我就想到了ramdisk,如果借助ramdisk,那么是否就可以脱离掉虚拟机,用几个命令是否就可以把系统装好呢?好,那么首先得有一个ramdisk才行。没有找到现成的,那就自己做吧。
117.龙芯2k1000-pmon(16)- linux下升级pmon c gzrom-dtb.bin 比较flash中的与文件是否相同(只比较0-0xfb000这一段)tools/program-2k1000-pmon 目录下包含源码,还有编译出来的工具。-o gzrom-dtb-new.bin 读出flash中的程序(1m以内)-w gzrom-dtb.bin 直接写入gzrom-dtb.bin。我这做了一些选项 (修改dtb的部分没有实现,暂时好像没有这个需求)gzrom-dtb.bin 与-w的功能相同。-d dtb.bin 写入dtb。
116.龙芯2k1000-pmon(15)- 只修改env部分 既然前面已经研究了gzrom-dtb.bin的生成从这期开始,将研究如何通过linux下的app修改gzrom.bin在flash中的内容。本期第一步,既然要修改env的字节部分,那首先得有一个自己要有env.bin,所以就要想办法生成一个这个文件包含了自己想要的环境变量,但是又不想更新pmon的全部。这里有风险:会造成存档pmon与实际运行的内容不一致的情况!!!(先忽略)
115.龙芯2k1000-pmon(14)- pmon编程优化 通过上面的分析,发现,其实gzrom-dtb.bin其实有很多空白区域,而且空白区域填充的都是0,这对flash来说并不友好,能否把填充的位置改为ff呢,这样编程的速度也会加快,对flash来说也是一种保护呢。但是说实话,感觉烧写的速度并没有明显提高,我没有计时。python脚本改好了:(可能有bug)更新试试,能否启动?
114.龙芯2k1000-pmon(13)- 串口如何用 如果要使用dvo显示接口,那么最多只能有4个串口能用,即0,3,4,5。可以配置为4个串口的模式,那就是每个串口只有发送和接收引脚,不再支持流控这些了。看到串口1,和串口2的定义,意思是引脚复用了,但是并没有看到12个串口 啊!如果要使用12个串口,那么显示接口不可用,每个串口只有发送和接收引脚。全功能是8个引脚,但是只有uart0可用,uart3,4,5不可用。dvo 是显示引脚,如果要显示,那么串口1和串口2都无法使用!如果串口0要配置为4个串口,就是用功能5,默认应该就是功能3。
112.龙芯2k1000-pmon(11)- gzrom-dtb.bin 文件的组成 最近又要折腾2k1000的设备了,研究了一下gzrom文件组成部分。pmon的编译可以参考之前的,这里我就不详述了gzrom-dtb.bin的生成命令在Makefile.inc(zloader.ls2k-hj20004目录)中截取出来如下:[ -存在gzrom.bin这个文件,复制这个文件为,相当于重命名了。2. python ../tools/pmonenv.py 用这个脚本来处理。(1.把dtb合并起来,2.加入一些环境变量)
110.firefly-overlayroot 折腾rk3399的开发板的时候,突然发现overlayroot这个词汇。我移植一下linux5.10的内核到firefly3399开发板,结果启动之后文件系统提示只读!!!这就让我很莫名。后来看到mount文件系统的情况,感觉也是不可思议。百度了一下overlayroot,觉得这个确实还是很不错的功能,尤其是对于嵌入式。整个文件系统是只读,当开始使用的时候,他所有的数据都保存在另一个分区中/userdata目录下。
109.firefly-extboot的生成脚本 我在这个脚本中截取extboot的生成部分,自己建立一个sh文件,放在kernel目录中。在firefly的sdk 2.5.1c及以后的版本都是extboot.img(对应表中的extboot)对于sdk 2.5.1c及以后的版本,sdk直接提供命令,build.sh extboot 即可完成。但是之前的并不是,而且一个boot.img,(对应表中rkboot)只要内核编译过,dtb文件也是正确的,自动生成是没啥问题啦。前提也是内核自己编译成功的情况下哈!1.修改自己的dts文件名称!
108.firefly-sdk下生成recovery.img sdk本身可以自己生成recovery.img,在sdk的目录下,直接运行build.sh recovery,就可以生成了。2. arm64.cpio.gz firefly的sdk中有提供,如果没有,可以找我私信或者下图的qq群下载。本文一则是想研究一下生成的过程,二则主要的就是要能够自己掌控,能够灵活编译出自己想要的recovery.img。看到recovery.img的生成命令之后,就可以灵活调整需要合并的内核,dtb等文件。4. 只要内核被正确编译过,就能生成对应的recovery.img文件。
107.am40刷机折腾记3-firefly镜像的烧写 1. 平台: rk3399 am40 4g+32g2. 内核:firefly的内核(整体镜像)3. 交叉编译工具 :暂时不编译4. 宿主机:ubuntu18.045. 需要的素材和资料:准备的情况:1.am40开发板2.ttl的usb转串口,波特率是1500000.3.12V电源输入4. 两个公头的usb 的线(能插电脑的普通的usb接口)5. RKDevTool_Release_v2.81(版本可以不同)+DriverAssitant_v4.5.zip。
106.am40刷机(linux)折腾记2-前期的准备工作2-软件使用 那么在调试的时候,可以任意的调整Image或者resource.img文件,去验证自己的内核或者dtb文件的正确性。 比如:正常的Image+待验证的dtb,可以验证dtb是否正常 正常的dtb+待验证的Image,看看自己内核的配置是否正常,驱动是否正常?
105.am40刷机(linux)折腾记1-前期的准备工作1 基本接口:HDMI接口 2个 (一个cpu自带的(尾部),一个是dp转的,目前内核没有驱动起来)千兆网卡 1个usb3.0 接口 2个双频wifi+蓝牙有一个tf卡槽,可用usb2.0 4个串口 4个。