看到rt-thread适配了riscv d1 d1s的bsp,适配了基于hal的驱动,发现T113与D1 pin to pin兼容,所以感觉外设驱动不大,可以提高效率,减小工作量,所以有移植rt-thread的念头,目前已经扣出基于XBOOT大佬的驱动,适配了SPL,引导bootloader,目前已经测试通过,可以引导,很快更新仓库,有感兴趣的小伙伴一起研究!目前仓库更新了spl,bootloader,以及uart,gpio,watchdog驱动,适配了reboot测试完毕稳定后更新上来。目前所有测试基于MQ电路一致的硬件
仓库地址
https://gitee.com/achinwoo/t113-rt-thread-spl-bootloader-hal
1. 万里长征第一步,T113的SPL实现
1.1 拷贝Xboot路径\xboot\src\arch\arm32\mach-t113s3的驱动代码,如下图所示
1.2 添加mksunxi.c工具,该工具负责计算sum,文件长度按照8K对齐方式,配置引导介质boot_media,比如spinor,spinand,sdmmc启动信息,添加到头中,占用64字节长度,详细阅读改代码,比较简单,容易理解。目前只适配了spinor启动。
添加scons脚本SConstruct,SConscript,
```
SConscript('./mksunxi/SConscript')
SConscript('./SConscript')
```
1.3 修改start.S汇编代码,修改之前代码
```
.align 5
undefined_instruction:
sub lr, lr, #4
save_regs
bl arm32_do_undefined_instruction
restore_regs
.align 5
software_interrupt:
sub lr, lr, #4
save_regs
bl arm32_do_software_interrupt
restore_regs
.align 5
prefetch_abort:
sub lr, lr, #4
save_regs
bl arm32_do_prefetch_abort
restore_regs
.align 5
data_abort:
sub lr, lr, #8
save_regs
bl arm32_do_data_abort
restore_regs
.align 5
not_used:
b .
.align 5
irq:
sub lr, lr, #4
save_regs
bl arm32_do_irq
restore_regs
.align 5
fiq:
sub lr, lr, #4
save_regs
bl arm32_do_fiq
restore_regs
修改之后代码
```
1.4 编译方法,win环境下scons命令即可,编译的log信息
1.5 产生一个固件名’sunxi-spl.bin’,通过xfel烧录到0地址即可
1.6 烧录后启动的信息,表明SPL成功运行,下步制作bootloader,未完持续….
最近编辑记录 achinwoo (2024-10-18 22:46:31)
离线
SPL采用win环境下编译,需要rtt官方的env支持,去官方下载即可,目前支持py2.7与py3.x所有版本。因env没有gcc x86版本,所以mksunxi.c我直接打包了exe文件,屏蔽了该脚本,有兴趣者自行下载win x86版本gcc,编译*可
最近编辑记录 achinwoo (2024-10-20 11:06:50)
离线
LCD驱动,寄存器方式
秋风冷飕飕,回家路途更新了lcd驱动,添加了drv_lcd.c, reg_de.h, reg_tcon.h文件,撸寄存器方式实现,特点固件体积小,适配其他分辨率LCD需要修改如下代码即可:
_panel = &lcd_config;
#define DEFAULT_LCD_CONFIG {\
width:480,\
height:272,\
bits_pixel:18,\
timing:\
{\
pixel_clock_hz:10000000,\
h_front_porch:8,\
h_back_porch:43,\
h_sync_len:4,\
v_front_porch:8,\
v_back_porch:12,\
v_sync_len:4,\
h_sync_active:0,\
v_sync_active:0,\
den_active:1,\
clk_active:0\
},\
swap_flag:0,\
ctp_flag:0\
}
测试命令
lcd_draw_point 240 120
附带编译的固件
boot-with-pt16M_UART2.zip
最近编辑记录 achinwoo (2024-10-21 18:20:26)
离线