创龙TLT113-MiniEVM最近一些折腾记录

/ 0评 / 0

创龙之前开放了一个99元的T113i开发板,全志或者瑞芯微都好,他们基本上要满血都是BSP全家桶,代码质量一言难尽的,作为折腾的人受不了,所以就搞了主线计划.

U-Boot => https://github.com/nickfox-taterli/t113-uboot

配置文件 t113i_minievm_defconfig

U-Boot比较好移植,毕竟我的目标是能启动就行,所以没那么高要求,所以我在U-Boot阶段是很多东西都做不了的,比如BSP支持的U-Boot阶段亮屏什么就不行的,但是我也说了,折腾这个就是娱乐,你产品非要特别要求,手戳寄存器当然也可以在U-Boot显示.

Linux内核 => https://github.com/nickfox-taterli/t113-linux

配置文件 tl-t113i-minievm_defconfig

设备树 sun8i-t113i-minievm.dts

Linux内核其实很多驱动D1都提供了,但是我还移植了下面特性.

原有的SPI,GPIO等特性,主线本身有,现在知道没有的,但是也没测试的有这些.

一些不常见但是主线早有的驱动,已经测试过.

所以说主线能启动,不代表全外设,折腾的路还是很长的.说个题外话,就算RK3399都这么老了,现在大家都还没做到全主线全外设驱动,比如Stateless V4L2 API.

C906小核代码我提供了两种形式,一种是非常simple的,就是纯裸,什么都没有,对于实际项目而言意义没那么大,但是对折腾意义可就大了,一种提供FreeRTOS + OpenAMP移植好的,并且是中断方式响应.这里先说比较完善的这个,注意这里是没有全志特调私货的.

C906 代码 => https://github.com/nickfox-taterli/t113-c906

调试信息在UART3端口输出,编译后把c906-fw.elf复制到/lib/firmware,然后启动就可以.

echo start > /sys/class/remoteproc/remoteproc0/state

在C906的UART3输出

在我另一个源 https://github.com/nickfox-taterli/t113-utils 的cpux下,有两个通信用工具,简单编译一下放到目标板.

主机上编译

root@debian:~/t113/t113-utils/cpux_code# arm-linux-gnueabihf-gcc rpmsg_open.c -o rpmsg_open
root@debian:~/t113/t113-utils/cpux_code# arm-linux-gnueabihf-gcc rpmsg_ping.c -o rpmsg_ping

刚才启动的最后一句能看到

virtio_rpmsg_bus virtio0: creating channel c906-echo addr 0x400

所以目标板可以这么测试.

# ./rpmsg_open /dev/rpmsg_ctrl0 c906-echo 0x400
# ./rpmsg_ping /dev/rpmsg0 "hello"
rx (5 bytes): hello

可以看到小核上也有打印

在C906要注意维护内存一致性,另外C906虽然支持S/U模式等,但是我试了几次都没办法target中断,看BSP实现也没用S/U模式,我也用M模式了.

HiFi4 核心本身是需要License的,但是我既然不是玩商业,我也不好意思问创龙他们要啊,所以我直接用GCC了,所以性能肯定上不来,HiFi4有自己的SRAM,所以关键时间代码要放SRAM运行,不然很崩,由于加载方法都是一样的,这里不多说测试了.HiFi4的是UART2输出.

HiFi4 代码 => https://github.com/nickfox-taterli/t113-hifi4

最后讲一下第一阶段BOOT,我这里用的是SysterKit,也是绕不开ddr blob的,这部分闭源是很正常的,通常是法律原因.我直接改SyterKit/board/100ask-t113i/board.c,就是换个串口,然后做了个小引导,这里就不多说了.单片机开发一样的体验.

第一阶段BOOT => https://github.com/nickfox-taterli/t113-utils/tree/main/SyterKit

写在最后

不知道是我这个板子什么原因,BSP内核NAND访问也是经常出错,我自己用主线驱动也是2Gbit的后半部分基本是出错的,对了手册查了寄存器无果,不过实际上我也基本不用NAND,也就是用来做一个拉起TF卡引导而已.我这个折腾里,系统就两个分区,一个是/boot (vfat),另一个是rootfs (ext4),算是最小化了,对于做产品是不好,毕竟这么多功能缺了,做产品还是看BSP的shit.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注