代码放到
https://gitee.com/zhangheyang/f1c100s_rt-thread
照着XBOOT老大的项目搞,其实没有坑,只是自己学艺不精,左脚踩到右脚摔了跟头。
一、移植I2C驱动
照着Xboot上的配置, 本来没有坑,只是我没有处理
#define I2C0_BASE_ADDR (0x01C27000)
#define I2C0_CCU_BUS_SOFT_RST_BASE (F1C100S_CCU_BASE | CCU_BUS_SOFT_RST3)
#define I2C0_CCU_BUS_SOFT_RST_BIT (1 << (80-64))
write32(I2C0_CCU_BUS_SOFT_RST_BASE, read32(I2C0_CCU_BUS_SOFT_RST_BASE)|I2C0_CCU_BUS_SOFT_RST_BIT);
然后就一路顺了。
二、移植GT911驱动
1、Xboot在老的主线GT911线序不对,
橘子 大神告诉我:
https://github.com/xboot/xboot/pull/11/commits/b119553d16f6b260090f16436e250ff316a550a4
看文档GT911有两个地址,这里用的是0x14,实际上这个代码与文档也稍有些差异,按文档INT后面要先拉低,再50msm后悬浮输入。
这里没有,但能跑,想不通就不想了,能跑就行。
2、在GT911中,INT中断后去获取从标,从解藕的角度来说,应该是
i2c_transfer(dev->i2c, msgs, 2) 但这里面用了锁,RTT在中断中不能用锁。
实际上XBoot代码中在中断时先关了中断,再开中断。应该不会有中时访问的问题,
所以改成了ingenic_i2c_xfer(dev, msgs, 2),OK了,能跑了,我继续不管他。。
三、将LittleVgl升到6.1.1
这里确实有些坑,搞了很久。
1、6.0开始
#if LV_COLOR_DEPTH == 24
#error "LV_COLOR_DEPTH 24 is deprecated. Use LV_COLOR_DEPTH 32 instead (lv_conf.h)"
#endif
XBOOT上是24,5.0也是24,我选错方向了,我决定去改LittleVgl的代码。入坑了,出不来。
这里要改的是FB里,改成32。
2、本来应该出坑了,但LittleVgl本身改变蛮大的,5.0根本不需要lv_disp_buf_init 这种操作
https://github.com/ZJ-TEK/ZJ_RT_Thread_NimBLE_LittlevGL_Nordic/blob/928dd3902a015931745ee36069a0e464b6a8aa97/ZJ_Application_NRF52840/001.lvgl_nimble_hrm/littlevgl/vgl_rtt_drv/lvgl_rtt_drv.c
我参考这个修改的,他直接用FB的缓冲当作lv_disp_buf_init,实际上不行,必需另外定义一个缓冲区。
然后就是修改一些5.0与6.0的函数不同的地方了,除了稍堵外没有什么坑。
3、将触摸驱动加进来
这个完全是没问题的,很简单,是我自己犯了些笔误错误将一个指针搞错了,大家应该不会遇到。
四、看门狗驱动
完全没问题,挂D档,冲过去。
在littleVgl中喂狗,也没什么可说的。
五、其它说明
主要是我的硬件引脚与荔枝派这些不同,所以大家使用时要注意了。
1、我的背光与LCD POWER有独立的IO控制,如果大家没有要修改一下。
2、我的I2C RST INT引脚可能与大家不同。好几位朋友使用时就是这个问题,他的RST/INT在我的背光控制中。
这样,在RTT下,触摸、看门狗驱动都OK了。
看门狗的视频就不上传了,就是点击一个按钮,while(1);
13秒后设备会重启。
离线
boot成功执行完jmp到rtt之后就没反应了是什么原因呢
离线
可能是地址不对吧。
当时觉得SPL BOOT只有10K,原来他提默认留了1M,
所以改了#define SIZE_START (0x00010000)
这样的话,烧FLASH也要烧到同一个地址。
检查一下,如果用我的哪个脚本 windows目录下哪个我改了 。
linux下的我忘了改,我改后重新上传一下。
离线
不是,我找到原因了,我虚拟机里面编译器的问题,我后来做官网的bin,改了下boot 你magic的检测就可以用了,这boot做得非常清晰简洁!简直完美,感谢兄弟
离线
很多朋友以为RTT需要在LINUX下进行,实 际上在WINDOWS下就可以进行。
离线
我也来点一个赞
离线
我哪里犯错误了
CC build/applications/main.o
CC build/drivers/board.o
CC build/drivers/drv_clock.o
CC build/drivers/drv_fb.o
drivers/drv_fb.c:25:6: error: #elif with no expression
25 | #elif
| ^
drivers/drv_fb.c:670:27: error: 'LCD_PRE_PIXEL' undeclared here (not in a function)
670 | .bits_per_pixel = LCD_PRE_PIXEL, //24
| ^~~~~
scons: *** [build/drivers/drv_fb.o] Error 1
scons: building terminated because of errors.
离线
#ifdef LV_COLOR_DEPTH
#define LCD_PRE_PIXEL LV_COLOR_DEPTH
#elif
#define LCD_PRE_PIXEL 24
#endif
不应该呀,是否修改了什么代码?
离线
不过根据readme里面的操作,删除rtt的LittlevGL2RTT ,后做pkgs update没有成功,报告路径没有文件。 我后来没管,直接编译的。 是否是因为littlevg 设置不对。
IOError: [Errno 2] No such file or directory: '... LittlevGL2RTT-6.1.1/package.json'
windows和linux上,都一样的问题。
最近编辑记录 joyhope (2020-02-06 19:36:05)
离线
不过我编译器的版本比较高,2018/2019的gcc-arm版本。
#ifdef LV_COLOR_DEPTH
#define LCD_PRE_PIXEL LV_COLOR_DEPTH
#elif
#define LCD_PRE_PIXEL 24
#endif
这个代码的确有问题
#ifdef LV_COLOR_DEPTH
#define LCD_PRE_PIXEL LV_COLOR_DEPTH
#else
#define LCD_PRE_PIXEL 24
#endif
所有这些#elif 都修改好,编译成功
LINK rtthread.elf
arm-none-eabi-objcopy -O binary rtthread.elf rtthread.bin
arm-none-eabi-size rtthread.elf
text data bss dec hex filename
364396 3964 1179044 1547404 179c8c rtthread.elf
scons: done building targets.
我现在没板子,这个环境还是做的非常赞的!! 谢谢,提供这个方案。
最近编辑记录 joyhope (2020-02-06 19:50:18)
离线
嗯,这里应该是要用#else
只是我用的GCC用#elif也可以。
离线
楼主太赞了,牛
离线
图片是我编译的错误,请问那个编译有什么问题吗
离线
最新的更新出来了,添加了工具链网盘连接,楼主,赞--
大家参考此贴操作
https://whycan.cn/t_3538.html#p33590
因为GCC文件太大,从百度网盘下载
https://pan.baidu.com/s/1PnoqZMJzt5kzg0fjbeTdDg
提取码:pamp
解压到tools目录
离线
linhuaou wrote:
这个链接是不是错了呢?
离线
没错,内容跟我们这个链接是一样的,我昨天特地试了下
超级萌新 wrote:
这个链接是不是错了呢?
离线
加了一点自己的代码,编译时就出错了,将menuconfig的选项LittlevGL2RTT(LittlevGL2RTT: The LittlevGl gui lib adapter RT-Thread --->)去掉后,这个错误就没有了。如果不加自己的代码也是没有问题的。
链接的时候出错--
LINK rtthread.elf
Error in calling command:arm-none-eabi-g++
Exception: Invalid argument
scons: *** [rtthread.elf] Error 22
scons: building terminated because of errors.
=
最近编辑记录 linhuaou (2020-02-09 11:52:52)
离线
这个看不出来,编译的问题,各自不同,只能他自己研究了。
首先我这个处理上是有不到位的地方,LittlevGL2RTT本来在RTT的pkgs中就有,而我升级到6.1.1后,因为不想改哪些配置,所以有的地方借用了他。
所以最好删除掉env的packges里Kconfig中的这个引用。
可以自己研究一下,将遇到的解决思路也放到论坛上给后面的人共享。
最近编辑记录 staunchheart (2020-02-09 12:26:47)
离线
好的,我暂时是把LittleGL2RTT这个去掉了,本身也暂时用不到,后续有新的发现再更新,谢谢啦
staunchheart wrote:
这个看不出来,编译的问题,各自不同,只能他自己研究了。
首先我这个处理上是有不到位的地方,LittlevGL2RTT本来在RTT的pkgs中就有,而我升级到6.1.1后,因为不想改哪些配置,所以有的地方借用了他。
所以最好删除掉env的packges里Kconfig中的这个引用。
可以自己研究一下,将遇到的解决思路也放到论坛上给后面的人共享。
离线
好像是链接文件数量有限制?我发现我减少一些文件就可以链接通过,否则不行。感觉这个链接文件的数量门槛是500个(*.o的数量)
staunchheart wrote:
这个看不出来,编译的问题,各自不同,只能他自己研究了。
首先我这个处理上是有不到位的地方,LittlevGL2RTT本来在RTT的pkgs中就有,而我升级到6.1.1后,因为不想改哪些配置,所以有的地方借用了他。
所以最好删除掉env的packges里Kconfig中的这个引用。
可以自己研究一下,将遇到的解决思路也放到论坛上给后面的人共享。
离线
学习了
晕哥 wrote:
windows下命令行有 8192 字符限制, 可能是这个原因导致的.
我记得 android ndk 的解决方案是按文件夹/模块打包成 .a, 最后链接这些 .a 文件
离线
晕哥,牛。我在代码里多加了一级文件夹,即原本是app/ 变成了 app/application,本来可以编译通过的现在链接出错,还是上面那个错误。
晕哥 wrote:
windows下命令行有 8192 字符限制, 可能是这个原因导致的.
我记得 android ndk 的解决方案是按文件夹/模块打包成 .a, 最后链接这些 .a 文件
离线
离线
这个坑我还是不深钻了。用两种方法来曲线解决--
1.缩短文件夹名以及文件名,特别是比较靠前的文件夹名称;
2.在Linux下编译;
晕哥 wrote:
这种处理方法估计还是没有解决命令行超过8192字符问题。
离线
请教下楼主,直接在DRAM下运行怎么操作的?--
cd rt-thread
./script/[linux or windows]/dram_exec.sh 测试增加USB模式不下载,直接USB运行.方便调试使用
`./script/[linux or windows]/run.sh
离线
请问楼主,我使用SPI FLASH方式启动,跳转后无反应,串口输出:
Init OK
Boot to SPI mode
Copy Flash offset 64 to RAM 0x8000000 size:366124
Copy Flash Ok!
Goto 0x80000000 ...
如果直接FEL模式启动时是正常的。我使用spiflash-read读出代码的前面1K字节,对比了下是完全一样的。
请问你遇到过这个坑吗?
离线
自己的坑,自己给坑填了。
本来想不懂脑子的使用代码,但发现spl跳转到rtthread后就是不行。没有办法,硬着头皮看了下arm9架构相关知识,最后发现代码基本都是对的,虽然有瑕疵,但能够使用。于是将注意力转向硬件驱动。最后终于发现是人品问题,具体经历我写出来供大家参考:
解释下楼主在对rtthread官方版本gcc_start.S文件的改造,在代码最开始定义了16个字节来表示固件信息:
1) 第1个4字节是跳转命令,机器码为0xea000002, 汇编的意思就是b reset, 跳转到reset函数执行。0x2是偏移地址,计算方法是:(目标地址-当前PC地址 -8)/4。其中目标地址是16,当前PC是0,偏移地址就是0x2了。XBOOT的作战的第一条指令直接定义为0xea000016,也是一样的道理。
2) 第2个4字节是幻数;
3) 第3个4字节是固定为0
4) 第4个4字节是固件长度,其中image_size定义在.lds文件中。
现在描述关于人品的大坑:
因为直接运行到SDRAM是没有问题的,只是spl拷贝到SDRAM不能成功。因此我一直怀疑是跳转或者是拷贝问题,毕竟这么多年的开发经验,直觉还是靠谱的:
经过查找ARM9的指令集,觉得楼主的指针跳转应用程序,虽然没有处理相关堆栈,但对于现在的应用是没有问题的。于是将目标怀疑为拷贝问题。
利用sunxi-fel工具读出flash应用程序固件文件(前1K字节),对比了下,与下载固件是一样的。
这下就懵逼了,为啥其他网友都可以,而我的板子就不行。于是就有了在本网站的发帖询问。。。。。。
昨天我突然想到,要不要看下SDRAM的拷贝数据是否OK,spi_flash驱动读出应用固件的第1个字节错误,本来是0x02, 读出来是0x03。找到问题就好办:
拷贝完成后,程序强制修改0x80000000的首个4字节为0xea000002,然后跳转,正常了。。。
MCU开机可以自动加载spl到SRAM中,说明SPI FLASH是正确的,应该是驱动问题。结果发现楼主修改了SPI 的CLK频率,改回原来的频率,一切OK。。。
我查看了我购买的荔枝派焊接的NOR FLASH丝印,虽然不是原理图标注的那个厂家型号。但是按照W25Q128的手册来看,QSPI的CLK最大70MHz,普通SPI的CLK最大33M。因此还得把SPI的频率降低才行,才保证不会出错。
那现在就有个问题,为何其他网友的不改SPI的CLK频率也行,我的板子就不行呢????所以只能归结为人品问题了。。。。。。。
离线
spunky wrote:
自己的坑,自己给坑填了。
本来想不懂脑子的使用代码,但发现spl跳转到rtthread后就是不行。没有办法,硬着头皮看了下arm9架构相关知识,最后发现代码基本都是对的,虽然有瑕疵,但能够使用。于是将注意力转向硬件驱动。最后终于发现是人品问题,具体经历我写出来供大家参考:
解释下楼主在对rtthread官方版本gcc_start.S文件的改造,在代码最开始定义了16个字节来表示固件信息:
1) 第1个4字节是跳转命令,机器码为0xea000002, 汇编的意思就是b reset, 跳转到reset函数执行。0x2是偏移地址,计算方法是:(目标地址-当前PC地址 -8)/4。其中目标地址是16,当前PC是0,偏移地址就是0x2了。XBOOT的作战的第一条指令直接定义为0xea000016,也是一样的道理。
2) 第2个4字节是幻数;
3) 第3个4字节是固定为0
4) 第4个4字节是固件长度,其中image_size定义在.lds文件中。现在描述关于人品的大坑:
因为直接运行到SDRAM是没有问题的,只是spl拷贝到SDRAM不能成功。因此我一直怀疑是跳转或者是拷贝问题,毕竟这么多年的开发经验,直觉还是靠谱的:
经过查找ARM9的指令集,觉得楼主的指针跳转应用程序,虽然没有处理相关堆栈,但对于现在的应用是没有问题的。于是将目标怀疑为拷贝问题。
利用sunxi-fel工具读出flash应用程序固件文件(前1K字节),对比了下,与下载固件是一样的。
这下就懵逼了,为啥其他网友都可以,而我的板子就不行。于是就有了在本网站的发帖询问。。。。。。昨天我突然想到,要不要看下SDRAM的拷贝数据是否OK,spi_flash驱动读出应用固件的第1个字节错误,本来是0x02, 读出来是0x03。找到问题就好办:
拷贝完成后,程序强制修改0x80000000的首个4字节为0xea000002,然后跳转,正常了。。。
MCU开机可以自动加载spl到SRAM中,说明SPI FLASH是正确的,应该是驱动问题。结果发现楼主修改了SPI 的CLK频率,改回原来的频率,一切OK。。。
我查看了我购买的荔枝派焊接的NOR FLASH丝印,虽然不是原理图标注的那个厂家型号。但是按照W25Q128的手册来看,QSPI的CLK最大70MHz,普通SPI的CLK最大33M。因此还得把SPI的频率降低才行,才保证不会出错。
那现在就有个问题,为何其他网友的不改SPI的CLK频率也行,我的板子就不行呢????所以只能归结为人品问题了。。。。。。。
惭愧,朋友的研究比我还深入。水平有限,只能将一些驱动移过来,太复杂的不会。
希望朋友继续研究,我近期也移了声音驱动,但因为使用了别人的代码,不适合公开。
要是有更多的人一起玩RTT+F1C100S就好了。
离线
首先感谢楼主 ,我主要是在liunx下用的比较多 ,对于win方式的 ota ,我更倾向与在liunx下操作 ,于是就找到了楼主的贴子 ,主要是使用了这个boot之后可以直接在liunx/osx下写入,而不需要win上使用ota工具打包再写 ,这个很棒 。还有我发现直接使用这个boot搭配 主线 RTT 会启动不了,查看了启动.s好像是判断前16个字节 标识判断是否是有效固件 ,好像是link文件不一样 。哈 能用这个很棒,感谢 。
离线
是的 ,除了 链接文件不一样 还在启动文件头部添加
b system_vectors
.long 0xaa55aa55
.long 0
.long image_size标识了 ,直接copy 链接文件 和在启动文件中添加标识 就可以使用在主线RTT上了
离线
ap321 wrote:
是的 ,除了 链接文件不一样 还在启动文件头部添加
b system_vectors .long 0xaa55aa55 .long 0 .long image_size标识了 ,直接copy 链接文件 和在启动文件中添加标识 就可以使用在主线RTT上了
你再参考 https://whycan.cn/t_3958.html 这个,他直接合并了启动与APP的bin文件,他给的源程序在linux下你要修改几个bug就可以用了
最近编辑记录 sea18c (2020-04-04 19:09:21)
离线
祼机 Fc100s 声卡驱动,那位大神有实现过的
离线
binbin wrote:
祼机 Fc100s 声卡驱动,那位大神有实现过的
我搞定了,RTT下可以播放声音,但因为参考了别人的代码,他不愿意开源。
离线
staunchheart wrote:
我搞定了,RTT下可以播放声音,但因为参考了别人的代码,他不愿意开源。
强,学习学习,看来要自已挖坑了,先找 linux 代码看看
离线
binbin wrote:
强,学习学习,看来要自已挖坑了,先找 linux 代码看看
将bootloader合并到RTT后,启动1秒左右,并加入了声音播放驱动。
离线
staunchheart wrote:
将bootloader合并到RTT后,启动1秒左右,并加入了声音播放驱动。
不错,如果用 RTT ,这个硬解Vido 就不能实现了吧,
离线
不错,挺漂亮的,感谢大神分享
离线
关于f1c100s,论坛里面的大神可以联合下,出套基于单片机的开发板了,直接秒杀stm32啦 哈哈
离线
你好,我的屏是720x720的分辨率。dclk如果设置12M以上,画面就会混乱。
另外,dclk为12M时,显示基本正常,但也会出现中间一段像出现偏移。如图,中间的都向下一行偏移了,显示不正常。

还有就是显示会抖动
不知道是什么问题导致,能提示一下可能是哪方面问题
最近编辑记录 grantho (2020-05-22 23:22:33)
离线
spunky wrote:
请问楼主,我使用SPI FLASH方式启动,跳转后无反应,串口输出:
Init OK
Boot to SPI mode
Copy Flash offset 64 to RAM 0x8000000 size:366124
Copy Flash Ok!
Goto 0x80000000 ...如果直接FEL模式启动时是正常的。我使用spiflash-read读出代码的前面1K字节,对比了下是完全一样的。
请问你遇到过这个坑吗?
我也遇到同样问题
Init OK
Boot to SPI mode
Copy Flash offset 64 to RAM 0x8000000 size:366156
Copy Flash Ok!
Goto 0x80000000 ...flash 型号 xt25f128b
把RT_SFUD_SPI_MAX_HZ 改为33M还是启动不了...
离线
我的板子触摸芯片是NS2009,写好了touch驱动,触摸也有数据,但是屏幕就是不动
lvgl_rtt_send_input_event x = 2107, y = 1101, event = 0x80
lvgl_rtt_send_input_event x = 2093, y = 1266, event = 0x02
lvgl_rtt_send_input_event x = 4095, y = 3711, event = 0x80
lvgl_rtt_send_input_event x = 2035, y = 3702, event = 0x02
lvgl_rtt_send_input_event x = 2035, y = 3702, event = 0x80
lvgl_rtt_send_input_event x = 2138, y = 1552, event = 0x02
lvgl_rtt_send_input_event x = 4095, y = 3836, event = 0x80
lvgl_rtt_send_input_event x = 2152, y = 1803, event = 0x02
lvgl_rtt_send_input_event x = 2104, y = 2025, event = 0x80
lvgl_rtt_send_input_event x = 4095, y = 3765, event = 0x02
lvgl_rtt_send_input_event x = 4095, y = 3765, event = 0x80离线
an99h wrote:
spunky wrote:
请问楼主,我使用SPI FLASH方式启动,跳转后无反应,串口输出:
Init OK
Boot to SPI mode
Copy Flash offset 64 to RAM 0x8000000 size:366124
Copy Flash Ok!
Goto 0x80000000 ...如果直接FEL模式启动时是正常的。我使用spiflash-read读出代码的前面1K字节,对比了下是完全一样的。
请问你遇到过这个坑吗?
我也遇到同样问题
Init OK Boot to SPI mode Copy Flash offset 64 to RAM 0x8000000 size:366156 Copy Flash Ok! Goto 0x80000000 ...flash 型号 xt25f128b
把RT_SFUD_SPI_MAX_HZ 改为33M还是启动不了...
解决了么?求答案。我的硬件licheepi nano(wifi) flash 也是xt25f128b
使用的工程是 https://gitee.com/LicheePiNano/lv7_rtthread_f1c100s
开发环境是 linux ubuntu16.04
编译boot.bin和rtthread.bin均无问题,能够运行在ram中,但是烧录到flash中就会出现问题,貌似没有跳转成功或拷贝失败。既然能够正确的打印出app的size,Copy Flash offset 64 to RAM 0x8000000 size:366156,说明flash这里驱动的没问题才是。
我使用的烧录指令是
sunxi-fel -p spiflash-write 0x00000000 ../../../f1c100s_spl/boot.bin
sunxi-fel -p spiflash-write 0x00010000 rtthread.bin
求助各位大神怎么解决。蹲坑好几天,丝毫没有进展
最近编辑记录 yuxin.liu (2021-05-19 19:58:40)
离线
yuxin.liu wrote:
an99h wrote:
spunky wrote:
请问楼主,我使用SPI FLASH方式启动,跳转后无反应,串口输出:
Init OK
Boot to SPI mode
Copy Flash offset 64 to RAM 0x8000000 size:366124
Copy Flash Ok!
Goto 0x80000000 ...如果直接FEL模式启动时是正常的。我使用spiflash-read读出代码的前面1K字节,对比了下是完全一样的。
请问你遇到过这个坑吗?
我也遇到同样问题
Init OK Boot to SPI mode Copy Flash offset 64 to RAM 0x8000000 size:366156 Copy Flash Ok! Goto 0x80000000 ...flash 型号 xt25f128b
把RT_SFUD_SPI_MAX_HZ 改为33M还是启动不了...解决了么?求答案。我的硬件licheepi nano(wifi) flash 也是xt25f128b
使用的工程是 https://gitee.com/LicheePiNano/lv7_rtthread_f1c100s
开发环境是 linux ubuntu16.04
编译boot.bin和rtthread.bin均无问题,能够运行在ram中,但是烧录到flash中就会出现问题,貌似没有跳转成功或拷贝失败。既然能够正确的打印出app的size,Copy Flash offset 64 to RAM 0x8000000 size:366156,说明flash这里驱动的没问题才是。
我使用的烧录指令是
sunxi-fel -p spiflash-write 0x00000000 ../../../f1c100s_spl/boot.bin
sunxi-fel -p spiflash-write 0x00010000 rtthread.bin
求助各位大神怎么解决。蹲坑好几天,丝毫没有进展
此问题已经解决。楼上已经有大神给出解决方案,是我没有看明白。
没有仔细的探究其原理。如果有和我用的是同一个工程,并且出现了相同的问题的话。可以参考我的回答
看下f1c100s_spl/spl/src中的sys-spi-flash.c
/* Set spi clock rate control register, divided by 4 */
addr = 0x01c05000;
write32(addr + SPI_CCR, 0x00001001); //使用这个不会出错
//修改SPI速度为100M
//write32(addr + SPI_CCR, 0x00001000); //使用这个读出来的flash的rtthread.bin的前四字节为 0xea00 0003 而不是0xea00 0002离线
跑lvgl,滑动屏幕时刷新速率有多少啊
离线
不知道为什么,我之前测试过几个厂家的GT911,总会有一块区域是不能正确响应的,在这个区域内只返回一个值,其它区域就是正常的线性的。有没有人遇到呀?
离线
感谢各位大神,解决了XT25F128B不跳转的问题
离线
@staunchheart
这个项目,现在支持视频播放了吗?
离线
@spunky
spi_flash驱动读出应用固件 这个是怎么读取的,我现在也遇到一样的现象。
离线
\ | /
RT - Thread Operating System
/ | \ 4.0.3 build Apr 12 2023
2006 - 2020 Copyright by rt-thread team
do components initialization.
initialize rti_board_end:0 done
initialize rt_hw_spi_flash_with_sfud_init[32m[I/SFUD] Warning: Read SFDP parameter header information failed. The gd25qxx is not support JEDEC SFDP.[0m
[32m[I/SFUD] Warning: This flash device is not found or not support.[0m
[32m[I/SFUD] Error: gd25qxx flash device is initialize fail.[0m
[31m[E/SFUD] ERROR: SPI flash probe failed by SPI device spi00.[0m
:1 done
initialize dfs_init:0 done
initialize rt_mmcsd_core_init:0 done
initialize rt_hw_lcd_init:0 done
initialize rt_hw_gpio_init:0 done
initialize rt_hw_i2c_init[32m[I/I2C] I2C bus [i2c0] registered[0m
:0 done
initialize gt9xx_driver_register
[15:46:27.102]收←◆i2c test failed attempt 1: 200
[15:46:27.376]收←◆i2c test failed attempt 2: 200[TP] gt9xx_probe goodix_i2c_test! error
:0 done
initialize rt_work_sys_workqueue_init:0 done
initialize clock_time_system_init:0 done
initialize pthread_system_init:0 done
initialize libc_system_init:0 done
initialize sal_init[32m[I/sal.skt] Socket Abstraction Layer initialize success.[0m
:0 done
initialize cplusplus_system_init:0 done
initialize rt_i2c_core_init:0 done
initialize tina_sdio_init:0 done
initialize main_page_initclk_divider_set_rate 29491216 198000000 0clk_divider_set_rate -2147483648 198000000 0
[15:46:27.470]收←◆:0 done
initialize finsh_system_init:0 done
periph_get_pll_clk:600000000
cpu_get_clk:408000000
ahb_get_clk:200000000
apb_get_clk:100000000
[15:46:27.600]收←◆
运行的时候GT911 没驱动起来,SDA是PD0 SCK是PD12 INT 是PE12 RST 是PA0 涉及到的这几个地方 IO更更改了 跑linux的时候打印日志触摸是生效的 就是不知道是不是时序的问题 还是 哪里还需要修改
离线
aozima wrote:
先给I2C上逻辑分析仪看下,也许是地址不对?或是没复位好
我编译的时候
将 rt_size_t ingenic_i2c_xfer(struct rt_i2c_bus_device *bus,struct rt_i2c_msg msgs[],rt_uint32_t num);
换成了
rt_size_t ingenic_i2c_xfer(struct rt_i2c_bus_device bus,struct rt_i2c_msg msgs,rt_uint32_t num);
现在可以读取gt911 的信息,但是触摸还是没反应 估计是编译器版本的问题吧
离线
[11:54:04.252]收←◆initialize rti_board_start:0 done
initialize rt_hw_spi_init:0 done
initialize rt_hw_wdt_initwatchdog_init
:0 done
\ | /
RT - Thread Operating System
/ | \ 4.0.3 build Apr 14 2023
2006 - 2020 Copyright by rt-thread team
do components initialization.
initialize rti_board_end:0 done
initialize rt_hw_spi_flash_with_sfud_init[32m[I/SFUD] Warning: Read SFDP parameter header information failed. The gd25qxx is not support JEDEC SFDP.[0m
[32m[I/SFUD] Warning: This flash device is not found or not support.[0m
[32m[I/SFUD] Error: gd25qxx flash device is initialize fail.[0m
[31m[E/SFUD] ERROR: SPI flash probe failed by SPI device spi00.[0m
:1 done
initialize dfs_init:0 done
initialize rt_mmcsd_core_init:0 done
initialize rt_hw_lcd_init:0 done
initialize rt_hw_gpio_init:0 done
initialize rt_hw_i2c_init[32m[I/I2C] I2C bus [i2c0] registered[0m
:0 done
initialize gt9xx_driver_register
[11:54:04.570]收←◆i2c test CFG_VER:\0GT911 verson: 911\0_6010
[11:54:04.822]收←◆send cfg ok:0 done
initialize rt_work_sys_workqueue_init:0 done
initialize clock_time_system_init:0 done
initialize pthread_system_init:0 done
initialize libc_system_init:0 done
initialize sal_init[32m[I/sal.skt] Socket Abstraction Layer initialize success.[0m
:0 done
initialize cplusplus_system_init:0 done
initialize rt_i2c_core_init:0 done
initialize tina_sdio_init:0 done
initialize main_page_init i2c test CFG_VER:ATouch panel x=0 y=0i2c test CFG_VER:ATouch panel x=0 y=0
clk_divider_set_rate 29491216 198000000 0
clk_divider_set_rate -2147483648 198000000 0
[11:54:04.934]收←◆:0 done
initialize finsh_system_init:0 done
msh />
[11:54:05.249]收←◆i2c test failed attempt 1: 222
[11:54:05.523]收←◆i2c test failed attempt 2: 222[TP] read_gt911 goodix_i2c_test! error
[11:54:05.658]收←◆i2c test failed attempt 1: 222
[11:54:05.796]收←◆int read coord err1:0
[11:54:05.932]收←◆i2c test failed attempt 2: 222[TP] read_gt911 goodix_i2c_test! error
[11:54:06.051]收←◆i2c test failed attempt 1: 128
[11:54:06.205]收←◆int read coord err1:0
[11:54:06.324]收←◆i2c test failed attempt 2: 128
[11:54:06.460]收←◆i2c test failed attempt 1: 128
[11:54:06.598]收←◆int read coord err2:0periph_get_pll_clk:600000000
cpu_get_clk:408000000
ahb_get_clk:200000000
apb_get_clk:100000000
[11:54:06.733]收←◆i2c test failed attempt 2: 128
[11:54:07.007]收←◆int read coord err2:0Trace:
[11:54:07.762]收←◆i2c test failed attempt 1: 222
[11:54:08.036]收←◆i2c test failed attempt 2: 222[TP] read_gt911 goodix_i2c_test! error
[11:54:08.309]收←◆int read coord err1:0
[11:54:08.564]收←◆i2c test failed attempt 1: 128
[11:54:08.838]收←◆i2c test failed attempt 2: 128
[11:54:09.111]收←◆int read coord err2:0Trace:
[11:54:09.866]收←◆i2c test failed attempt 1: 222
[11:54:10.141]收←◆i2c test failed attempt 2: 222[TP] read_gt911 goodix_i2c_test! error
[11:54:10.413]收←◆int read coord err1:0
[11:54:10.668]收←◆i2c test failed attempt 1: 128
[11:54:10.942]收←◆i2c test failed attempt 2: 128
通过一步步调试 GT911 在初始化的时候 和 部分硬件 包括 应用加载的时候 911 都是工作的,可以读取版本和数据 直到
clk_divider_set_rate 后就不行了 为什么 clk_divider_set_rate 设置了两次 是不是 clk_divider_set_rate -2147483648 198000000 0 有问题
离线
@tangloong
触摸终于出数据了, 在原有的代码处 写配置之前 往0x8040寄存器写2 延时100ms,写配置然后再往0x8040写0 这样软复位一下就成功了, 我看到很多人都不写,不知道是不是屏的差异,之前写小屏触摸也需要写一个软复位的
离线
@tangloong
触摸终于出数据了, 在原有的代码处 写配置之前 往0x8040寄存器写2 延时100ms,写配置然后再往0x8040写0 这样软复位一下就成功了, 我看到很多人都不写,不知道是不是屏的差异,之前写小屏触摸也需要写一个软复位的
离线
现在该移植LVGL 8了,使用RTthread Studio 新建的工程 加入LVGL 8 不出图像,不知道还需要改哪里的配置 好事多磨!!!
离线
奇怪的很 同意的文件 换个工程 触摸有时候都不行 尴尬
离线
昨天终于解决一开显示触摸就不能用的问题了,因为D0 和D12 被触摸占用了 还是用的666 改成565 就好了,
离线
现在快9.0了,楼主该更新了,哈哈
离线
诺诺问一下 这个工程如何使用啊 小白一个
离线

make编好后,报少个文件
离线