代码放到
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目录
离线
大家参考此贴操作
https://whycan.cn/t_3538.html#p33590
这个链接是不是错了呢?
离线
没错,内容跟我们这个链接是一样的,我昨天特地试了下
这个链接是不是错了呢?
离线
加了一点自己的代码,编译时就出错了,将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这个去掉了,本身也暂时用不到,后续有新的发现再更新,谢谢啦
这个看不出来,编译的问题,各自不同,只能他自己研究了。
首先我这个处理上是有不到位的地方,LittlevGL2RTT本来在RTT的pkgs中就有,而我升级到6.1.1后,因为不想改哪些配置,所以有的地方借用了他。
所以最好删除掉env的packges里Kconfig中的这个引用。
可以自己研究一下,将遇到的解决思路也放到论坛上给后面的人共享。
离线
好像是链接文件数量有限制?我发现我减少一些文件就可以链接通过,否则不行。感觉这个链接文件的数量门槛是500个(*.o的数量)
这个看不出来,编译的问题,各自不同,只能他自己研究了。
首先我这个处理上是有不到位的地方,LittlevGL2RTT本来在RTT的pkgs中就有,而我升级到6.1.1后,因为不想改哪些配置,所以有的地方借用了他。
所以最好删除掉env的packges里Kconfig中的这个引用。
可以自己研究一下,将遇到的解决思路也放到论坛上给后面的人共享。
离线
学习了
windows下命令行有 8192 字符限制, 可能是这个原因导致的.
我记得 android ndk 的解决方案是按文件夹/模块打包成 .a, 最后链接这些 .a 文件
离线
晕哥,牛。我在代码里多加了一级文件夹,即原本是app/ 变成了 app/application,本来可以编译通过的现在链接出错,还是上面那个错误。
windows下命令行有 8192 字符限制, 可能是这个原因导致的.
我记得 android ndk 的解决方案是按文件夹/模块打包成 .a, 最后链接这些 .a 文件
离线
这个坑我还是不深钻了。用两种方法来曲线解决--
1.缩短文件夹名以及文件名,特别是比较靠前的文件夹名称;
2.在Linux下编译;
这种处理方法估计还是没有解决命令行超过8192字符问题。
离线
请教下楼主,直接在DRAM下运行怎么操作的?--
## 测试
```shell
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不能成功。因此我一直怀疑是跳转或者是拷贝问题,毕竟这么多年的开发经验,直觉还是靠谱的:
1. 经过查找ARM9的指令集,觉得楼主的指针跳转应用程序,虽然没有处理相关堆栈,但对于现在的应用是没有问题的。于是将目标怀疑为拷贝问题。
2. 利用sunxi-fel工具读出flash应用程序固件文件(前1K字节),对比了下,与下载固件是一样的。
这下就懵逼了,为啥其他网友都可以,而我的板子就不行。于是就有了在本网站的发帖询问。。。。。。
昨天我突然想到,要不要看下SDRAM的拷贝数据是否OK,spi_flash驱动读出应用固件的第1个字节错误,本来是0x02, 读出来是0x03。找到问题就好办:
1. 拷贝完成后,程序强制修改0x80000000的首个4字节为0xea000002,然后跳转,正常了。。。
2. MCU开机可以自动加载spl到SRAM中,说明SPI FLASH是正确的,应该是驱动问题。结果发现楼主修改了SPI 的CLK频率,改回原来的频率,一切OK。。。
我查看了我购买的荔枝派焊接的NOR FLASH丝印,虽然不是原理图标注的那个厂家型号。但是按照W25Q128的手册来看,QSPI的CLK最大70MHz,普通SPI的CLK最大33M。因此还得把SPI的频率降低才行,才保证不会出错。
那现在就有个问题,为何其他网友的不改SPI的CLK频率也行,我的板子就不行呢????所以只能归结为人品问题了。。。。。。。
离线
自己的坑,自己给坑填了。
本来想不懂脑子的使用代码,但发现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不能成功。因此我一直怀疑是跳转或者是拷贝问题,毕竟这么多年的开发经验,直觉还是靠谱的:
1. 经过查找ARM9的指令集,觉得楼主的指针跳转应用程序,虽然没有处理相关堆栈,但对于现在的应用是没有问题的。于是将目标怀疑为拷贝问题。
2. 利用sunxi-fel工具读出flash应用程序固件文件(前1K字节),对比了下,与下载固件是一样的。
这下就懵逼了,为啥其他网友都可以,而我的板子就不行。于是就有了在本网站的发帖询问。。。。。。昨天我突然想到,要不要看下SDRAM的拷贝数据是否OK,spi_flash驱动读出应用固件的第1个字节错误,本来是0x02, 读出来是0x03。找到问题就好办:
1. 拷贝完成后,程序强制修改0x80000000的首个4字节为0xea000002,然后跳转,正常了。。。
2. 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上了
离线
是的 ,除了 链接文件不一样 还在启动文件头部添加
```
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 声卡驱动,那位大神有实现过的
离线
祼机 Fc100s 声卡驱动,那位大神有实现过的
我搞定了,RTT下可以播放声音,但因为参考了别人的代码,他不愿意开源。
离线
我搞定了,RTT下可以播放声音,但因为参考了别人的代码,他不愿意开源。
强,学习学习,看来要自已挖坑了,先找 linux 代码看看
离线
强,学习学习,看来要自已挖坑了,先找 linux 代码看看
将bootloader合并到RTT后,启动1秒左右,并加入了声音播放驱动。
离线
将bootloader合并到RTT后,启动1秒左右,并加入了声音播放驱动。
不错,如果用 RTT ,这个硬解Vido 就不能实现了吧,
离线
不错,挺漂亮的,感谢大神分享
离线
关于f1c100s,论坛里面的大神可以联合下,出套基于单片机的开发板了,直接秒杀stm32啦 哈哈
离线
你好,我的屏是720x720的分辨率。dclk如果设置12M以上,画面就会混乱。
另外,dclk为12M时,显示基本正常,但也会出现中间一段像出现偏移。如图,中间的都向下一行偏移了,显示不正常。
还有就是显示会抖动
不知道是什么问题导致,能提示一下可能是哪方面问题
最近编辑记录 grantho (2020-05-22 23:22:33)
离线
请问楼主,我使用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
离线
spunky 说:请问楼主,我使用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)
离线
an99h 说:spunky 说:请问楼主,我使用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的时候打印日志触摸是生效的 就是不知道是不是时序的问题 还是 哪里还需要修改
离线
先给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编好后,报少个文件
离线