Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
Bootloader
全志_T113
RT-Thread一般讨论
T113适配rt-thread
发布于 2024-07-23 15:17:04 浏览:1448
订阅该版
**前言** ------------ 看到rt-thread适配了riscv d1 d1s的bsp,适配了基于hal的驱动,发现T113与D1 pin to pin兼容,所以感觉外设驱动不大,可以提高效率,减小工作量,所以有移植rt-thread的念头,目前已经扣出基于XBOOT大佬的驱动,适配了SPL,引导bootloader,目前已经测试通过,可以引导,很快更新仓库,有感兴趣的小伙伴一起研究!目前仓库更新了spl,bootloader,以及uart,gpio,watchdog驱动,适配了reboot测试完毕稳定后更新上来。 **适配内容** ------------ 1. UART是标配,目标实现MSH命令行 1. GPIO的驱动,目标实现驱动板载LED闪烁,1秒闪烁一次 1. SPI驱动适配,目标实现25Q128的分区获取 1. LCD驱动适配,目标实现RGB,MIPI,LVDS驱动,工作量较大,风险未知 1. PWM驱动,目标LCD背光亮的控制 1. SDIO驱动,实现SD卡启动 1. USB驱动,目标实现固件下载更新,发现HAL有USB摄像头驱动,可以撸一下玩玩 1. G2D驱动,研究狗2蛋,目标可以实现廉价的人像识别的`800 * 1280 LCD` 1. 仓库地址... https://gitee.com/achinwoo/t113-rt-thread-spl-bootloader-hal 1. 基于MQ电路一致的硬件 ![基与MQ电路相同的开发板](https://oss-club.rt-thread.org/uploads/20240723/8e9e7ca8a93d2f850d5ebf618b3bb754.jpg.webp) **万里长征第一步,T113的SPL实现** ------------ 1. 拷贝Xboot路径\xboot\src\arch\arm32\mach-t113s3的驱动代码,如下图所示 ![src.png](https://oss-club.rt-thread.org/uploads/20240724/30b2c655781739ca8cd4fc514b409506.png) 2. 添加mksunxi.c工具,该工具负责计算sum,文件长度按照8K对齐方式,配置引导介质boot_media,比如spinor,spinand,sdmmc启动信息,添加到头中,占用64字节长度,详细阅读改代码,比较简单,容易理解。目前只适配了spinor启动。 添加scons脚本SConstruct,SConscript, ``` SConscript('./mksunxi/SConscript') SConscript('./SConscript') ``` 修改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 ``` 修改之后代码 ``` .align 5 undefined_instruction: b . .align 5 software_interrupt: b . .align 5 prefetch_abort: b . .align 5 data_abort: b . .align 5 not_used: b . .align 5 irq: b . .align 5 fiq: b . ``` 3. 编译方法,win环境下scons命令即可,编译的log信息 ![build.png](https://oss-club.rt-thread.org/uploads/20240724/655f989695671513c92ec6603a632f14.png) 4. 产生一个固件名'sunxi-spl.bin',通过xfel烧录到0地址即可 ![xfel.png](https://oss-club.rt-thread.org/uploads/20240724/f20f17d4038bc67adde91d9e45d514fa.png) 5. 烧录后启动的信息,表明SPL成功运行,下步制作bootloader,未完持续.... ![spl.png](https://oss-club.rt-thread.org/uploads/20240724/3aa3ee34a11890baf1aec3cbe4513d28.png) **bootloader制作,编译** ------------ 1. 下载官方内核,切换到v4.0.2分支,不要问我为什么不是最新的分支,因为编译冲突较多,我技术有限,没有搞定,呵呵!删除内核下无用的文件夹bsp,文档,例子等,缩小了体积。 1. 适配board.c是重要的内容,还好有https://club.rt-thread.org/ask/article/9d792e8da44d1294.html 大佬的适配笔记,偷挪过来使用了,嘿嘿! 1. 适配了gpio驱动,看门狗的驱动,实现了reboot,以及加参数的'reboot elf'重启进入fle命令 1. 通过板子上电后,main函数实现了开启线程,实现LED闪烁, 1. 编译方法,一样win环境下,采用scons命令编译,该编译脚本有打包功能,直接将原来的spl进行打包,所以要注意,先编译SPL的固件后,再编译bootloader,否则会提示找不到spl固件打包失败,最后打包产生的固件名为'boot-with-pt16M_UART0.bin',使用xfel工具烧录0地址到25Q128即可,目前欠缺一个bootloader.c文件,以及内核态下的spinor驱动适配,现在内核适配已经正常启动工作,稍晚陆续释放上来。 1. 启动的log如下 ------------ ``` msh />SPL:Achinwoo \ | / - RT - Thread Operating System / | \ 4.0.2 build Jul 24 2024 2006 - 2019 Copyright by rt-thread team [D/[WDOG]] cmd:RT_DEVICE_CTRL_WDT_SET_TIMEOUT arg:1 [D/[WDOG]] wdog value:1 ******rt-thread bootloader run******* CLK: PLL_CPUX = 1200MHz CLK: PLL_PERI(2X) = 1200MHz CLK: PLL_PERI(1X) = 600MHz CLK: PLL_PERI(800) = 800MHz CLK: PLL_DDR = 1584MHz msh />help RT-Thread shell commands: reboot - reboot list_fd - list file descriptor list_device - list device in system list_timer - list timer in system list_mempool - list memory pool in system list_msgqueue - list message queue in system list_mailbox - list mail box in system list_mutex - list mutex in system list_event - list event in system list_sem - list semaphore in system list_thread - list thread version - show RT-Thread version information free - Show the memory usage in the system. ps - List threads in the system. help - RT-Thread shell help. echo - echo string to file df - disk free mkfs - format disk with file system mkdir - Create the DIRECTORY. pwd - Print the name of the current working directory. cd - Change the shell working directory. rm - Remove(unlink) the FILE(s). cat - Concatenate FILE(s) mv - Rename SOURCE to DEST. cp - Copy SOURCE to DEST. ls - List information about the FILEs. sf - SPI Flash operate. msh /> ``` 1. spi驱动的更新,2024-08-09,七夕头一晚更新,采用寄存器方式实现,对接rt-thread的 I/O 设备管理接口,可以实现读写25Q128,测试命令如下 ------------ ``` msh />sf probe spi00 [SFUD] Find a Winbond flash chip. Size is 16777216 bytes. [SFUD] sf_cmd flash device is initialize success. 16 MB sf_cmd is current selected device. ``` 1. I2C的驱动更新,今天更新I2C,顺便支持GT911电容触摸,采用了INT方式,提高了效率 ``` [D/TOUCH] [TP] touch down [244, 262] [D/TOUCH] [TP] touch motion [244, 262] [D/TOUCH] [TP] touch motion [244, 262] [D/TOUCH] [TP] touch motion [244, 262] [D/TOUCH] [TP] touch motion [244, 262] [D/TOUCH] [TP] touch motion [244, 262] [D/TOUCH] [TP] touch motion [244, 262] [D/TOUCH] [TP] touch motion [244, 262] [D/TOUCH] [TP] touch motion [244, 262] [D/TOUCH] [TP] touch motion [244, 262] [D/TOUCH] [TP] touch up [244, 262] ``` ![screenshot_fb6bf3d3c42308dc82f617c19a5161c.png](https://oss-club.rt-thread.org/uploads/20240811/920a9f27f901c94898ef854d12db8712.png) 1. 演示的视频链接 [9e03d33e77ba182ac4981a9f55b022f8.mp4](https://club.rt-thread.org/file_download/e1ba1b5ddab810db) [演示demo](https://b23.tv/MTP7PGa "演示demo") 1. 周日酷暑在家,测试了一下官方的hal库,即D1的lcd驱动,驱动LCD屏幕,可以实现打点测试了,分辨率`480*272 RGB`,效率的确很高!很方便移植了!,稍晚更新上来 ![lcd.jpg](https://oss-club.rt-thread.org/uploads/20240729/6e9c26ce2289172d514b7793511dc065.jpg.webp) 2. 2024-10-21秋风凉爽,回家路途,发现LCD的HAL库驱动依赖太多了,编译的体积比较大,所以抽空撸了一把基于寄存器的的LCD驱动,增加drv_lcd.c,reg_de.h,reg_tcon.h文件,起来很少,编译的固件很小,目前已经更新仓库啦!,测试方法如下所示: ``` lcd_draw_point 0 0 ```
10
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
achinwoo
这家伙不懒,啥都会写
文章
5
回答
13
被采纳
2
关注TA
发私信
相关文章
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
WIZnet_W5500
ota在线升级
cubemx
PWM
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
出出啊
1518
个答案
343
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
813
个答案
177
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
5
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
3
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部