显示效果如上图,使用RTThread Studio 开发,触摸 和 framebuffer 使用的论坛里的 非常感谢
RTThread 和LVGL 直接使用的Studio直接初始化出来的
期间遇到各种问题 ,包括一直卡在触摸,原来是开发板Pd0和PD12 用于触摸而显示设置的666导致触摸I2C信号被破坏,改成565就好了
目前还有的问题就是 颜色跟实际设计的演示,电脑版lvgl 显示的不太一致
离线
RGB 中 R和B反色的问题找到了 因为开发板 RB交叉了 不知道为什么这样设计 需要在drv_fb 里设置tcon时序的时候将0x40 的第23位设置为1
离线
能否分享一下,RTThread Studio 的配置过程
离线
能否分享一下,RTThread Studio 的配置过程
按照上面的步骤 应该就可以创建一个新的工程了
接下来 添加LVGL
离线
接下来 说说我改的配置 rtconfig.h
添加
#define RT_DEBUG_INIT 1 //开启debug模式时:该宏定义为0时表示关闭打印组件初始化信息,定义为1时表示启用
#define RT_DEBUG_THREAD 0 //开启debug模式时:该宏定义为0时表示关闭打印线程切换信息,定义为1时表示启用
#define TINA_USING_LCD // 开启使用LCD 初始化fb
#define LV_MEM_DYNAMIC
#define LV_HOR_RES 1024 // 屏幕尺寸
#define LV_VER_RES 600 // 屏幕尺寸
#define LV_DPI 50
#define TINA_USING_UART1 // 因为我开发板用的串口1 而系统默认的串口0 所以我需要加
修改
#define RT_CONSOLE_DEVICE_NAME "uart1" // 因为我开发板用的串口1 而系统默认的串口0 所以我需要改
//#define TINA_USING_SPI1 // 这个是因为我的开发板 开了这个不能启动 但是调了好久 才发现要屏蔽他 其他开发板不知道要不要改
离线
[09:02:29.387]收
\ | /
- RT - Thread Operating System
/ | \ 4.1.0 build Apr 13 2023 04:35:43
2006 - 2022 Copyright by RT-Thread team
[33m[W/SFUD] [SFUD] Warning: The OS tick(100) is less than 1000. So the flash write will take more time.[0m
[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
periph_get_pll_clk:600000000
cpu_get_clk:408000000
ahb_get_clk:200000000
apb_get_clk:100000000
msh />(dev != RT_NULL) assertion failed at function:rt_dev
当编译烧录 后是这样的话 就证明成功了
离线
楼主能否详细讲解一下,如何在main.c里面添加一个LVGL自带的demo程序(或者最简单的GUI程序)吗?我只会单片机裸机开发,不懂RT系统。。。
我可以根据你讲解的demo例程,依葫芦画瓢的学习一下。
谢谢
最近编辑记录 sh200436 (2023-04-25 20:20:21)
离线
楼主能否详细讲解一下,如何在main.c里面添加一个LVGL自带的demo程序(或者最简单的GUI程序)吗?我只会单片机裸机开发,不懂RT系统。。。
我可以根据你讲解的demo例程,依葫芦画瓢的学习一下。
谢谢
想要跑一个完整的 LVGL显示出来 还是很多工作要做的 包括跟F1C200S的显示驱动配置,LVGL flush数据到显示缓冲区等 这些都完成后再main.c 或者自建文件都可以,例如我写的例子:
#include "rtthread.h"
#include "drv_clock.h"
#include <lvgl.h>
#include "drv_touch.h"
#include "lv_port_disp.h"
int main(int argc, char **argv)
{
rt_kprintf("periph_get_pll_clk:%d\n", periph_get_pll_clk());
rt_kprintf("cpu_get_clk:%d\n", cpu_get_clk());
rt_kprintf("ahb_get_clk:%d\n", ahb_get_clk());
rt_kprintf("apb_get_clk:%d\n", apb_get_clk());
return 0;
}
// lvgl 测试控件
void lv_border_style_test(){
static lv_style_t style;
lv_style_init(&style); // 初始化样式
lv_style_reset(&style); // 重置样式
lv_style_set_radius(&style, 10); // 设置样式圆角弧度
lv_style_set_bg_opa(&style, LV_OPA_COVER); // 设置样式背景的透明度,不透明
lv_style_set_bg_color(&style, lv_palette_lighten(LV_PALETTE_RED, 1)); // 设置样式的背景色为淡红色
lv_style_set_border_color(&style, lv_color_black()); // 设置样式边框颜色为黑色
lv_style_set_border_width(&style, 5); // 设置边框宽度
lv_style_set_border_opa(&style, LV_OPA_50); // 设置边框透明度
// 设置边框范围顶部、底部、右边、左边
lv_style_set_border_side(&style, LV_BORDER_SIDE_TOP | LV_BORDER_SIDE_BOTTOM | LV_BORDER_SIDE_RIGHT | LV_BORDER_SIDE_LEFT);
lv_obj_t * obj = lv_obj_create(lv_scr_act()); // 基于屏幕创建对象
if (obj != NULL){
lv_obj_add_style(obj, &style, 0); // 给对象添加样式
lv_obj_set_size(obj, 200, 200);
lv_obj_center(obj); // 对象居中显示
}
}
//任务内容
static void lvgl_thread(void *parameter){
lv_init(); //LVGL 初始化
lv_port_disp_init(); //LVGL 显示初始化 需要去做配置
//lv_demo_widgets();
lv_border_style_test(); // 运行demo
rt_kprintf("\n ui_init \n");
while (1){
lv_task_handler(); //周期性调用事务处理器
rt_thread_mdelay(1);
}
}
// 初始化创建一个任务
static int lvgl_demo_init(void){
rt_thread_t tid;
tid = rt_thread_create("LVGL", lvgl_thread, RT_NULL, 4096,10, 10); //创建一个任务
if (tid == RT_NULL){
rt_kprintf("Fail to create 'LVGL' thread\n");
}
rt_thread_startup(tid);// 启动任务
return 0;
}
INIT_APP_EXPORT(lvgl_demo_init); //应用自动初始化 可以放在任意文件下 RTT 上电后会按顺序加载
编译烧录 串口打印一下内容就成功了 lvgl_demo_init 出现这个表示加载了demo ui_init 表示执行到了
[09:15:33.547]收←◆initialize rti_board_start:0 done
initialize rt_hw_spi_init:0 done
\ | /
- RT - Thread Operating System
/ | \ 4.1.0 build Apr 26 2023 08:59:55
2006 - 2022 Copyright by RT-Thread team
do components initialization.
initialize rti_board_end:0 done
initialize rt_mmcsd_core_init:0 done
initialize dfs_init:0 done
initialize rt_hw_spi_flash_with_sfud_init[33m[W/SFUD] [SFUD] Warning: The OS tick(100) is less than 1000. So the flash write will take more time.[0m
[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 rt_hw_lcd_init:0 done
initialize rt_hw_gpio_init:0 done
initialize elm_init:0 done
initialize lvgl_thread_init:0 done
initialize finsh_system_init:0 done
initialize tina_sdio_init:0 done
initialize lvgl_demo_init:0 done
periph_get_pll_clk:600000000
cpu_get_clk:408000000
ahb_get_clk:200000000
apb_get_clk:100000000
clk_divider_set_rate 29491216 198000000 0clk_divider_set_rate 2147024424 198000000 0
ui_init
[09:15:33.814]收←◆msh />
[09:15:34.157]收←◆[31m[E/MMC] [err]:0x00000100, RTO[0m
[31m[E/MMC] mmc cmd 8 err[0m
[31m[E/MMC] [err]:0x00000100, RTO[0m
[31m[E/MMC] mmc cmd 5 err[0m
[31m[E/MMC] [err]:0x00000100, RTO[0m
[31m[E/MMC] mmc cmd 55 err[0m
[31m[E/MMC] [err]:0x00000100, RTO[0m
[31m[E/MMC] mmc cmd 55 err[0m
[31m[E/MMC] [err]:0x00000100, RTO[0m
[31m[E/MMC] mmc cmd 55 err[0m
[31m[E/MMC] [err]:0x00000100, RTO[0m
[31m[E/MMC] mmc cmd 55 err[0m
[31m[E/MMC] [err]:0x00000100, RTO[0m
[31m[E/MMC] mmc cmd 1 err[0m
[31m[E/MMC] [err]:0x00000100, RTO[0m
[31m[E/MMC] mmc cmd 1 err[0m
[31m[E/MMC] [err]:0x00000100, RTO[0m
[31m[E/MMC] mmc cmd 1 err[0m
显示效果
离线
谢谢楼主的指点!
今天把楼主的代码复制到main.c里,然后从LVGL网站下载并修改lvgl/examples/porting/lv_port_disp_template.c和.h文件,再添加到main.c同一个目录下,编译,然后出现了编译错误:
修改了半天也不知道是什么情况,就索性把该文件夹下的三个文件全部删除了。然后继续编译。。。。
终于,编译通过了!!哈哈哈!!!
编译的问题解决了,就相当于路子走通了,后面调试应该会容易许多。
等电路板做好后,准备下载一下试试。
非常感谢楼主的大力帮助,总算编译通过一个工程了。。。。
等后面点亮LCD屏幕后,再向楼主汇报,谢谢
离线
其实这个文件和main里做的是同一个事情,初始化lvgl 显示和触摸 user-gui 就是你自己的界面,因为你没这个函数 所以报错 ,删掉就行
离线
其实这个文件和main里做的是同一个事情,初始化lvgl 显示和触摸 user-gui 就是你自己的界面,因为你没这个函数 所以报错 ,删掉就行
我买了一块F1C100S的串口屏,拆掉了板子上的SPI-FLASH芯片,用TF-JTAG的转接板,把J-LINK下载器和板子连接起来。当下载程序时,出现了上面的错误信息。硬件接线和软件环境如下:
(1)J-LINK下载器使用TCK, TMS, TDI, TDO, VCC, GND,总计6根线和板子连接;
(2)拆掉了板子自带的SPI_FLASH芯片;
(3)电脑是Win7系统,RT-Studio整个编译软件,按照楼主的操作步骤,均采用最新的版本;
(4)RT-Studio调试配置里,下载地址为: 0x08000000
--根据错误信息,J-LINK下载器已经识别芯片了,就是不能下载,不知道问题出在了哪里。
请问楼主,我的配置方式,和你那边的配置方式,有什么不同吗?谢谢
离线
@sh200436
可能是rttstudio 不支持这个芯片调试吧,我是直接usb 下载的,串口看打印信息,而且程序需要引导的,不是这一个bin文件就能跑起来了,还需要一个boot.bin 很多帖子或gitee 里有这个bin 直接用就好了
离线
我换了好几台电脑,反复安装卸载RT-Studio后,还是提示错误信息,原来是这样啊。。。。[囧][囧][囧]
那我再把SPI_FLASH焊回去,先下载boot文件,再把APP文件烧进去试试看。
谢谢。。。
离线
链接: https://pan.baidu.com/s/1QVp65GaXa-v_Rmq_EEg2AQ 提取码: qvjq 复制这段内容后打开百度网盘手机App,操作更方便哦
这个是我做的一个烧录ram的 你双击bat就可以烧录了 前提是装好驱动啥的 rtt.bin 不一定显示 我也不知道是啥时候的版本了
离线
@tangloong
谢谢楼主,上班后我就试试。
手上没有工具,拆掉的SPI_FLASH芯片暂时没办法复原。。
离线
离线
大佬 ,我手头也有同样的开发板 ,贴的也是nandflash,有办法通过nandflash启动RTT的生成的BIN么?我看坑网里大佬们分享的有基于Linux的支持nand的方法
离线
大佬 ,我手头也有同样的开发板 ,贴的也是nandflash,有办法通过nandflash启动RTT的生成的BIN么?我看坑网里大佬们分享的有基于Linux的支持nand的方法
暂时 我也只是跑通了ram 和SD卡启动,flash没成功 你那边成功了还请告知一下,我自己画的板子 烧录linux到flash也不行,不知道是不是因为我用的华邦的flash跟开发板不一样导致的,flash的信息时可以读取的
离线
大佬 ,我手头也有同样的开发板 ,贴的也是nandflash,有办法通过nandflash启动RTT的生成的BIN么?我看坑网里大佬们分享的有基于Linux的支持nand的方法
试一下这个帖子的方法吧
https://whycan.com/p_89372.html#p89372
下载的工具我上传到网盘里了,有兴趣可以研究一下,反正我没成功 链接:https://pan.baidu.com/s/1H4btWD7jokvOQWa7nmcFhQ
提取码:hoke
离线
@tangloong
兄弟 我把板子换成了nor flash,用https://whycan.com/t_4907.html里大佬们的方法烧录启动成功了。
Nand我用xfel把spl烧录进去是可以启动的,但是nand容易有坏块,所以它是通过烧录到多个page,启动时会依次从0,32,64....寻找启动固件,而且BOOTROM是只从page中取1K的数据,用xfel spinand splwrite 1024 <address> <file> - Write file to spi nand flash with split support来烧录,参考https://whycan.com/t_4916.html。spl启动后我没有尝试了,后面的程序启动需要nand驱动和校验的支持,一般的应用程序又不大,没必要上nand。
附上我改的通过uart1打印调试信息的spl
boot.zip
#include <io.h>
void sys_uart_putc(char c)
{
uint32_t addr = 0x01c25400;
while((read32(addr + 0x7c) & (0x1 << 1)) == 0);
write32(addr + 0x00, c);
}
void sys_uart_init(void)
{
uint32_t addr;
uint32_t val;
/* Config GPIOA3 and GPIOA2 to txd1 and rxd1 */
addr = 0x01c20800 + 0x00;
val = read32(addr);
val &= ~(0xf << ((3 & 0x7) << 2));
val |= ((0x5 & 0x7) << ((3 & 0x7) << 2));
write32(addr, val);
val = read32(addr);
val &= ~(0xf << ((2 & 0x7) << 2));
val |= ((0x5 & 0x7) << ((2 & 0x7) << 2));
write32(addr, val);
/* Open the clock gate for uart1 */
addr = 0x01c20068;
val = read32(addr);
val |= 1 << 21;
write32(addr, val);
/* Deassert uart1 reset */
addr = 0x01c202d0;
val = read32(addr);
val |= 1 << 21;
write32(addr, val);
/* Config uart1 to 115200-8-1-0 */
addr = 0x01c25400;
write32(addr + 0x04, 0x0);
write32(addr + 0x08, 0xf7);
write32(addr + 0x10, 0x0);
val = read32(addr + 0x0c);
val |= (1 << 7);
write32(addr + 0x0c, val);
val = 54;
write32(addr + 0x00, val & 0xff);
write32(addr + 0x04, (val >> 8) & 0xff);
val = read32(addr + 0x0c);
val &= ~(1 << 7);
write32(addr + 0x0c, val);
val = read32(addr + 0x0c);
val &= ~0x1f;
val |= (0x3 << 0) | (0 << 2) | (0x0 << 3);
write32(addr + 0x0c, val);
sys_uart_putc('I');
sys_uart_putc('n');
sys_uart_putc('i');
sys_uart_putc('t');
sys_uart_putc(' ');
sys_uart_putc('O');
sys_uart_putc('K');
sys_uart_putc('\r');
sys_uart_putc('\n');
}
最近编辑记录 adigita (2023-05-24 10:52:38)
离线
楼主电脑模拟LVGL是怎么做的?用VS吗?
离线
@adigita
我发现不是boot 和 应用不行,原来是sunxi-fel 不认识板子上的1G flash
ubuntu18@ubuntu:~/Workspace/F1C200S/RTOS/f1c100s_rt-thread/tools/sunxi-tools$ ./sunxi-fel spiflash-info
ERROR: You don't have permission to access Allwinner USB FEL device
ubuntu18@ubuntu:~/Workspace/F1C200S/RTOS/f1c100s_rt-thread/tools/sunxi-tools$ sudo ./sunxi-fel spiflash-info
Manufacturer: Unknown (00h), model: C8h, size: 131072 bytes.
ubuntu18@ubuntu:~/Workspace/F1C200S/RTOS/f1c100s_rt-thread/tools/sunxi-tools$ sudo ./sunxi-fel spiflash-info
Manufacturer: Unknown (00h), model: EFh, size: 1024 bytes.
ubuntu18@ubuntu:~/Workspace/F1C200S/RTOS/f1c100s_rt-thread/tools/sunxi-tools$
我试了两块板子 都是1G的 读出来的容量都不对
正常人家读16MFlash 是这样的
如果MPi-R板背面是Winbond的W25Q128(16MB nor flash),那么就要用fel刷机。
查看芯片信息sunxi-fel ver
AWUSBFEX soc=00001663(F1C100s) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000
显示spiflash的信息sunxi-fel spiflash-info
Manufacturer: Winbond (EFh), model: 40h, size: 16777216 bytes.
离线
牛牛,Mark一下,楼主是用的7" 40P的液晶屏吧,竟然是1024x600,切屏的时候效果怎样? 以前用200s跑awtk,800x480就差不多了
离线
@tangloong
用大佬xboot做的xfel可以识别nand的 https://whycan.com/t_7323.html
离线
楼主电脑模拟LVGL是怎么做的?用VS吗?
我用的codeblocks 和官网的 lv_port_win_visual_studio 工程做的
VS装C++ 太大了 就用了 codeblocks
都可以跑起来的
UI是用 SquareLine Studio设计的
模拟器只是验证一下,导入嵌入式没模拟器方便快捷
离线
牛牛,Mark一下,楼主是用的7" 40P的液晶屏吧,竟然是1024x600,切屏的时候效果怎样? 以前用200s跑awtk,800x480就差不多了
是的7寸40Pin 1024*600的屏幕,切换的时候流畅度还可以接受,只要不是全幅度动画效果,切个页面还是没压力的,但是我想做的应用是竖屏的 但是市面上RGB找不到竖屏,使用的是LVGL 软件转的方式,需要将所有数据拷贝一遍,这样在滑动的时候就显得不那么流畅了,还没想好是换带2D加速的主控还是就这样算了
离线
@adigita
换成 norflash 了,结果还是没启动成功,不知道是哪里的问题了
用的烧录命令
.\tools\sunxi-fel.exe -p spiflash-write 0x00000000 boot.bin
.\tools\sunxi-fel.exe -p spiflash-write 0x00010000 rtthread.bin
@pause
离线
@adigita
换了个boot
Boot to SPI mode
entry=00000000, sp=00009ff4, lr=ffff417c.
RTThread
Load 0x00024938 bytes @0x81b00000 FAIL.
Load again FAIL.
Load again FAIL.
Load again FAIL.
Load again FAIL.
...
离线
@tangloong
大佬,你贴的百度云链接里面的固件触摸可以用吗?我在ram运行以后触摸点不起来,用的GT911,和你是同款板子
离线
楼主能分享下工程代码吗
离线
用xfel刷写spinand倒是能引导,xboot里面也有spinand的启动函数和自拷贝函数。单从xboot引导我倒是成功了,就是触摸一直用不了
离线
@tangloong
大佬,你贴的百度云链接里面的固件触摸可以用吗?我在ram运行以后触摸点不起来,用的GT911,和你是同款板子
https://gitee.com/kasira/f1c200s_rtt_lvgl830 我把我的工程 提交到gitee了,编译的bin文件我一并提交了,你可以直接使用burn里面的bat 执行烧录
串口信息会打印触摸的坐标
离线
楼主能分享下工程代码吗
离线
用xfel刷写spinand倒是能引导,xboot里面也有spinand的启动函数和自拷贝函数。单从xboot引导我倒是成功了,就是触摸一直用不了
如果方便 可以加我微信或者邮箱 gitee留了我联系方式 flash 我一直没成功 不知道是不是boot的问题
离线
用xfel刷写spinand倒是能引导,xboot里面也有spinand的启动函数和自拷贝函数。单从xboot引导我倒是成功了,就是触摸一直用不了
终于成功了 估计是读取spi不稳定的原因 多次出现 Magic error 也就是头部的几个地址数据不正确 只有2857740885 这个是正常的 复位几次蔡成功
我估计需要把spi的频率调低才行 现在是100M
Init OK
Boot to SPI mode
4294967295
Magic error
Init OK
Boot to SPI mode
4294967295
Magic error
Init OK
Boot to SPI mode
4294967295
Magic error
Init OK
Boot to SPI mode
4294967295
Magic error
Init OK
Boot to SPI mode
4294967295
Magic error
Init OK
Boot to SPI mode
2857740885
Copy Flash offset 64 to RAM 0x8000000 size:2505724
Copy Flash Ok!
Goto 0x80000000 ...
锟斤拷'锟絠nitialize 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 May 17 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] Find a Winbond flash chip. Size is 16777216 bytes.[0m
[32m[I/SFUD] gd25qxx flash device is initialize success.[0m
[32m[I/SFUD] Probe SPI flash gd25qxx by SPI device spi00 success.[0m
:0 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_registeri2c test failed attempt 1: 200i2c 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: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
msh />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 May 17 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] Find a Winbond flash chip. Size is 16777216 bytes.[0m
[32m[I/SFUD] gd25qxx flash device is initialize success.[0m
[32m[I/SFUD] Probe SPI flash gd25qxx by SPI device spi00 success.[0m
:0 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_registeri2c test failed attempt 1: 200i2c 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: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
msh />
离线
@tangloong
用大佬xboot做的xfel可以识别nand的 https://whycan.com/t_7323.html
你是否尝试过 xfel 写nand flash 的 boot和rtthread.bin
我的boot添加了nand flash 驱动,可以读取nand flash了,现在有个奇怪的问题是boot 和 RTT 不能同时写
写了boot在写rtt 0-1M的空间会被擦除,如果在写一次boot 1M后的空间被擦除了,搞得只能在flash存一个bin
离线
用楼主的工程构建,提示
arm-none-eabi-gcc "../burn/f1c100s_spl_sd_nor_nand_uart1/spl/src/sys-dram.c"
../burn/f1c100s_spl_sd_nor_nand_uart1/spl/src/drv_clock.c:24:10: fatal error: io.h: No such file or directory
24 | #include <io.h>
arm-none-eabi-gcc "../burn/f1c100s_spl_sd_nor_nand_uart1/spl/src/sys-sdio.c"
| ^~~~~~
compilation terminated.
make: *** [burn/f1c100s_spl_sd_nor_nand_uart1/spl/src/subdir.mk:52: burn/f1c100s_spl_sd_nor_nand_uart1/spl/src/drv_clock.o] Error 1
make: *** Waiting for unfinished jobs....
../burn/f1c100s_spl_sd_nor_nand_uart1/spl/src/sys-copyself.c:29:10: fatal error: io.h: No such file or directory
29 | #include <io.h>
| ^~~~~~
compilation terminated.
make: *** [burn/f1c100s_spl_sd_nor_nand_uart1/spl/src/subdir.mk:52: burn/f1c100s_spl_sd_nor_nand_uart1/spl/src/sys-copyself.o] Error 1
../burn/f1c100s_spl_sd_nor_nand_uart1/spl/src/sys-dram.c:29:10: fatal error: io.h: No such file or directory
29 | #include <io.h>
| ^~~~~~
compilation terminated.
make: *** [burn/f1c100s_spl_sd_nor_nand_uart1/spl/src/subdir.mk:52: burn/f1c100s_spl_sd_nor_nand_uart1/spl/src/sys-dram.o] Error 1
离线
@iincity
io.h 在库里呀
忘了说了 f1c100s_spl_sd_nor_nand_uart1 这个是独立的工程 跟rtthread没关系的 不能添加到rtthread 的工程里
rtthread 工程我是 用RT-Thread Studio 编译的
f1c100s_spl_sd_nor_nand_uart1 我是在ubuntu编译的 编译出来是boot 详细可以看该文件夹下的 readme.md
离线
@tangloong
嗯,我把它RT-Thread Studio 工程移出去了,就好了
最近编辑记录 iincity (2023-07-16 13:27:11)
离线
E:\sunxi\sunxi-tools-mingw64>sunxi-fel ver
AWUSBFEX soc=00001663(F1C100s) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000
E:\sunxi\sunxi-tools-mingw64>sunxi-fel spiflash-info
Manufacturer: Unknown (00h), model: CDh, size: 65536 bytes.
RT-Thread Studio 构建的bin要怎么烧录
离线
@tangloong
方便移植吗
离线
@huaze
我的gitee 工程里 readme 文件 编译和烧录步骤 都写了的,
需要烧录一个boot 用来引到rtt ,而boot 代码也在里面有,boot.bin 也有 直接在burn 文件夹下面
至于你说的方不方便移植 不懂你指的是什么方面 我已经用rtt这个做了两个项目了
离线
Init OK
Boot to SPI mode
2857740885
Copy Flash offset 64 to RAM 0x8000000 size:129856
Copy Flash Ok!
Goto 0x80000000 ...
ą°O°:_釨µc´½HaҤٓdWJ@«T㿝É=gtYC엸w섫ꎸmMͽj{O·Nm²2P bCȏHʝ܌֘HnɰȄ}´W
ԕˢ1>ب!qᕂ0{ÿdkპ»ԙ돽«©5ܚ¥8O
ױI0 53ݚOHT[Fl6zQ¿׃4\Vʓ¯ݠ
½3¢٦ȶqlsځRHhS°dªCt7Qۢ蘄(3뿠ls~T
程序运行起来,串口是一堆乱码
离线
@mjay
这个问题 要么是波特率的问题 要么是初始化时钟的问题
我配套的工程 没有这种情况
离线
这个资料太棒了,正要找rtthread+lvgl的配置过程的文章,之前用keil感觉bsp这块不是太全。
离线
楼主,用哪个工具写的norspi?可以正常引导了吗? 能分享一下具体的过程和 命令格式吗? 我在一直停留在
Init OK
Boot to SPI mode
3852464152
Magic error
离线
楼主,用哪个工具写的norspi?可以正常引导了吗? 能分享一下具体的过程和 命令格式吗? 我在一直停留在
Init OK
Boot to SPI mode
3852464152
Magic error
https://gitee.com/kasira/f1c200s_rtt_lvgl830
我的这个readme 里面 后半部分有详细介绍boot 和app 之间拷贝到关系
照着我的link.lds 和 start gcc.s 进行改造即可
离线
@tangloong
msh />Init OK
Boot to SPI mode
2857740885
Copy Flash offset 64 to RAM 0x8000000 size:210744
Copy Flash Ok!
Goto 0x80000000 ...
Init OK
Boot to SPI mode
2857740885
Copy Flash offset 64 to RAM 0x8000000 size:210744
Copy Flash Ok!
Goto 0x80000000 ...
按您说的修改后,可以引导了,但是无法正常跳转
,再次请教楼主了
最近编辑记录 hansdau (2023-12-21 22:03:00)
离线
@hansdau
估计你只是改了魔术头 应用size 没计算或者计算不对 造成拷贝的不是完整的应用
这样就导致应用没跑起来
离线
请教楼主最后bin在flash上运行成功了吗?
离线
请教楼主最后bin在flash上运行成功了吗?
跑起来了呢,不是有照片么,都用他都做完两项目了
离线
@tangloong
请教下前辈大佬,有2个问题请教下,
1.您百度云盘提供的boot.h是串口0输出的对吧,然后工程下的boot.h是串口1的log?
2.这个boot.h只能在linux下编译吗,我好像测试了用windows下的env环境编译显示
'cl' is not recognized as an internal or external command,
离线
上边问题搞定了,感谢楼主的教程。
正确返回
Boot to SPI Nor Flash mode...
Copy flashs offset 0x10000 to RAM 0x8000000 size:439752
Copy Flash Ok!
goto 0x80000000 ...
离线
又得请教楼主了,用您的工程是可以正常显示的。
然后我重新新建了工程,然后添加了LVGL后,
编译烧录到flash。找不到lcd,断言出错。请问这个大概是哪方面问题呢
UART0 Init OK
Boot to SPI Nor Flash mode...
Copy flashs offset 0x10000 to RAM 0x8000000 size:418896
Copy Flash Ok!
goto 0x80000000 ...
\ | /
- RT - Thread Operating System
/ | \ 4.1.0 build Jan 1 2024 23:53:54
2006 - 2022 Copyright by RT-Thread team
[W/SFUD] [SFUD] Warning: The OS tick(100) is less than 1000. So the flash write will take more time.
[I/SFUD] Find a flash chip. Size is 16777216 bytes.
[I/SFUD] gd25qxx flash device is initialize success.
[I/SFUD] Probe SPI flash gd25qxx by SPI device spi00 success.
periph_get_pll_clk:600000000
cpu_get_clk:408000000
ahb_get_clk:200000000
apb_get_clk:100000000
(device != RT_NULL) assertion failed at function:disp_init, line number:182
断言错误的代码处
static void disp_init(void){
/*You code here*/
device = rt_device_find("lcd");
RT_ASSERT(device != RT_NULL);
if (rt_device_open(device, RT_DEVICE_OFLAG_RDWR) == RT_EOK){
rt_device_control(device, RTGRAPHIC_CTRL_GET_INFO, &info);
}
}
离线
@mysterious
1. gitee的bin我做了 两个串口 可以切换
2.win上使用env 可以编译
最近编辑记录 tangloong (2024-01-02 12:10:51)
离线
@mysterious
需要在 rt_config 定义 TINA_USING_LCD 这样drv_fb.c 才能初始化
离线
TINA_USING_LCD,这个宏加了,还是不显示的。
后来我看下,您的工程的drivers和libcup内有那些文件,我的工程没有,复制进去就可以显示了。
那么又有新的问题了,这些drv_fb和iomem.h等等文件您是从哪里来的
离线
请教楼主最后bin在flash上运行成功了吗?
离线
TINA_USING_LCD,这个宏加了,还是不显示的。
后来我看下,您的工程的drivers和libcup内有那些文件,我的工程没有,复制进去就可以显示了。
那么又有新的问题了,这些drv_fb和iomem.h等等文件您是从哪里来的
不知道为什么,您的工程的menuconfig内有using LCD,而我新建的功能就没有
这个是我的
这个是您的工程内的
请问drivers下的Kconfig,是您自己加的using lcd这些吗?
config TINA_USING_LCD
bool "Using lcd"
select TINA_USING_LCD_DISPLAY
default y
最近编辑记录 mysterious (2024-01-03 23:32:57)
离线
请教楼主最后bin在flash上运行成功了吗?
成功了 norflash 和sd卡都可以 nandflash 没弄好 也不打算弄了,rtt 不会太大 几m 就够了
离线
TINA_USING_LCD,这个宏加了,还是不显示的。
后来我看下,您的工程的drivers和libcup内有那些文件,我的工程没有,复制进去就可以显示了。
那么又有新的问题了,这些drv_fb和iomem.h等等文件您是从哪里来的
文件咋来的我的gitee 里有写,menuconfig 是我自己添加的,不然studio 有时候不注意会清理掉自己写的内容
离线
@tangloong
好的,谢谢楼主了,学到了不少,再次感谢,配置确实会覆盖,所以Kconfig我也自己加了
离线
再请教下大佬,
lv_conf.h的这个为什么设置成32呢?不应该是16吗?
/*Color depth: 1 (1 bits per pixel), 8 (RGB332), 16 (RGB565), 32 (ARGB8888)*/
#define LV_COLOR_DEPTH 32
离线
再请教下大佬,
lv_conf.h的这个为什么设置成32呢?不应该是16吗?
/*Color depth: 1 (1 bits per pixel), 8 (RGB332), 16 (RGB565), 32 (ARGB8888)*/
#define LV_COLOR_DEPTH 32
设计的时候用的32位深度,也可能使用了透明色吧
我尝试过换成16,颜色不对,也就没深究了
离线
楼主,还是请教下,还是不知道drv_i2c这种文件从哪里来的,是官方有? 还是别人工程移植的? 还是自己写的?
离线
楼主,还是请教下,还是不知道drv_i2c这种文件从哪里来的,是官方有? 还是别人工程移植的? 还是自己写的?
https://gitee.com/LicheePiNano/lv7_rtthread_f1c100s/tree/master/rt-thread/bsp/allwinner_tina/drivers
这里 别人根据LINUX驱动移植的,RTT没有官方支持的都是自己弄,本来F1C100S官方资料都不会给,怎么可能有RTT的驱动
离线
明白了,谢谢楼主,感谢解惑。继续努力学习,开始移植NS2009
最近编辑记录 mysterious (2024-01-08 19:07:41)
离线
刚建立了一个rtt的工程,添加了lvgl编译报错,各位大侠,哪位知道什么原因吗?
离线
刚建立了一个rtt的工程,添加了lvgl编译报错,各位大侠,哪位知道什么原因吗?https://whycan.com/files/members/10501/微信图片_20240108234324.png
我反正把这行屏蔽掉了 这个阴影要不要无所谓了
draw_shadow(draw_ctx, dsc, coords);
不过在匠心创的SDK就可以编译过去
最近编辑记录 tangloong (2024-01-09 15:46:46)
离线
刚建立了一个rtt的工程,添加了lvgl编译报错,各位大侠,哪位知道什么原因吗?https://whycan.com/files/members/10501/微信图片_20240108234324.png
你可以读一读设备驱动源码,这样就好调试了
离线
rt-thread studio生成的驱动里边没有drv_fb.c,但我看好多例程里都有,是可以配置出来还是必须自己手动添加?
离线
rt-thread studio生成的驱动里边没有drv_fb.c,但我看好多例程里都有,是可以配置出来还是必须自己手动添加?
自己加
离线
@tangloong
大佬 你的LVGL是用什么软件模拟的 啊
离线
@tangloong
大佬 你的LVGL是用什么软件模拟的 啊
官方提供的工程 vscode 或者 codeblock 都可以
离线
wakulgz 说:@tangloong
大佬 你的LVGL是用什么软件模拟的 啊官方提供的工程 vscode 或者 codeblock 都可以
请问有下载链接吗 这边确实没有找到啊 原谅手残 谢谢
离线
tangloong 说:wakulgz 说:@tangloong
大佬 你的LVGL是用什么软件模拟的 啊官方提供的工程 vscode 或者 codeblock 都可以
请问有下载链接吗 这边确实没有找到啊 原谅手残 谢谢
https://docs.lvgl.io/master/integration/ide/pc-simulator.html#simulator 这里有各个ide 的模拟器 都是弄好了的
离线
@tangloong
您好 重新创建的项目 按照你的教程 无法引导 大概是哪里原因 是boot指引还是烧录地址不对啊
用你的工程师没有问题的 你的工程烧录到0x00010000 地址可以正常启动
我自己新创建的工程 无法启动
离线
@tangloong
您好 我昨天可能描述错了 我是想表达 lvgl你是如何编辑界面的 用的什么软件啊
离线
@tangloong
您好 我昨天可能描述错了 我是想表达 lvgl你是如何编辑界面的 用的什么软件啊
可以自己写 或者squareline 弄好后在移植过来
离线
请问一下你的中文是用的点阵字库还是freetype!
离线
wakulgz 说:@tangloong
您好 我昨天可能描述错了 我是想表达 lvgl你是如何编辑界面的 用的什么软件啊可以自己写 或者squareline 弄好后在移植过来
噢噢噢噢 大佬 厉害啊
离线
请问一下你的中文是用的点阵字库还是freetype!
点阵
离线
@tangloong
貌似 i2c0经常挂 你们遇到嘛 400k 200k 100k 都有概率挂掉 然后就卡死了
离线
楼主,我原先的板子是运行linux程序,现烧录你的软件时,先按下FEL按键再按下RESET按键,点击flashtoram.bat提示错误:Allwinner USB FEL device not found!这种会是什么问题呢?
离线
楼主,我原先的板子是运行linux程序,现烧录你的软件时,先按下FEL按键再按下RESET按键,点击flashtoram.bat提示错误:Allwinner USB FEL device not found!这种会是什么问题呢?
usb没驱动 先安装驱动 zadig-2.3
邮箱是我qq 找不到了 我qq发你
离线
@tangloong
貌似 i2c0经常挂 你们遇到嘛 400k 200k 100k 都有概率挂掉 然后就卡死了
年前有做一个项目,表现为调试接电脑usb供电,稳定跑几天都没问题,接上客户的开关电源12v的,通过降压和滤波后,给板子供电,一部分板子一段时间就死了,电阻触摸屏点不了,我怀疑是静电或电磁干扰,然后我就加了tvs 和esd 现在效果好了,但是不一定解决了,因为没确定具体是因为啥,也有可能是你说的i2c 卡死了,我准备用匠芯创做块板子看看
最近编辑记录 tangloong (2024-03-13 08:52:30)
离线
@tangloong
(i2c_bus) assertion failed at function:gt9xx_probe, line number:286
我也正在找原因 可能是驱动问题啊 因为 更改程序 100k 200k 400k来回尝试 总有可以用的 另外 我试试该一下上啦电阻
离线
@wakulgz
烧录问题解决了,又出现了一个问题,用up主的工程在榴莲派开发板上改了480*272的屏,显示像花屏的感觉,触摸正常,是否需要开机时清屏
离线
https://whycan.com/files/members/14110/IMG_20240313_113252(1).jpg@wakulgz
烧录问题解决了,又出现了一个问题,用up主的工程在榴莲派开发板上改了480*272的屏,显示像花屏的感觉,触摸正常,是否需要开机时清屏
改配置 不同屏需要不同配置 tcon时钟 厂 扫描 行扫描
离线
@tangloong
还是老老实实看一下波形图吧 各种尝试都不行
离线
@tangloong
还是老老实实看一下波形图吧 各种尝试都不行
唉 只要 i2c 失败 就测不到任何波形啊 感觉不是硬件问题啊 软件里面有时候重新编译整个工程就好了 有时候 设置不同i2c时钟频率也可以 大多数不可以
只要可以了就一直可以 但是只要失败了 就一直失败 奇怪的很
离线
@wakulgz
你是电容屏么,我使用电容屏 i2c 很稳定呢
离线
@wakulgz
你是电容屏么,我使用电容屏 i2c 很稳定呢
gt911啊 你的很稳定吗?
离线
tangloong 说:@wakulgz
你是电容屏么,我使用电容屏 i2c 很稳定呢gt911啊 你的很稳定吗?
很稳 几乎不出问题
离线
wakulgz 说:tangloong 说:@wakulgz
你是电容屏么,我使用电容屏 i2c 很稳定呢gt911啊 你的很稳定吗?
很稳 几乎不出问题
大佬 这种情况你们遇到吗 大概哪里原因啊
ui_init
[D/I2C] msgs[0] W, addr=0x51, len=1
[D/I2C] msgs[1] R, addr=0x51, len=7
msh />Please input LCD_pwmset 0 to 100
Execption:
r00:0x00000021 r01:0x7fc07574 r02:0x01c2507c r03:0x00000003
r04:0x00000001 r05:0x800ec260 r06:0x80072440 r07:0x800f0000
r08:0x80267434 r09:0xdeadbeef r10:0xdeadbeef
fp :0xdeadbeef ip :0x80025f4c
sp :0x800ebe1c lr :0x80010bc8 pc :0x80010bc8
cpsr:0x60000013
data abort
thread - stack:
thread pri status sp stack size max used left tick error
---------------- --- ------- ---------- ---------- ------ ---------- ---
tshell 20 suspend 0x000000c4 0x00001000 04% 0x0000000a 000
HAL_IO 11 running 0x00000154 0x00000200 66% 0x00000006 000
LVGLMAIN 10 suspend 0x00000084 0x00001400 31% 0x00000005 000
mmcsd_detect 22 suspend 0x000000a8 0x00000400 17% 0x00000013 000
alarmsvc 10 suspend 0x0000009c 0x00000800 07% 0x00000005 000
tidle0 255 ready 0x00000058 0x00000100 43% 0x00000016 000
shutdown...
shutdown...
离线
@wakulgz
没看明白 这是关机了?gitee应该有我微信,可以加我
离线
请教各位,RTThread能支持全志T3吗?
离线
@tangloong
我用NXP 的GUI Guider生成的ui只支持16和24bit,不知道楼主用过没?
离线
@tangloong
我用NXP 的GUI Guider生成的ui只支持16和24bit,不知道楼主用过没?
最开始用了一下感觉不好用 就换squareline了
离线