页次: 1
匠芯创wifi使用.pdf
在调试匠心创SDK的wifi中遇到了不少问题,经过一阵摸爬滚打,算是初步解决了wifi使用遇到的问题,做了个简易总结抛砖引玉。其中所有修复的代码都来源于AI,有更好的方法欢迎一起交流。
问题解决了,提供个思路。
虽然在匠心创文档BringUp章节中,对于建立自己的开发板时,因为存储介质的修改涉及到需要修改的地方特别多,所以建议优先选择存储介质相同的开发板配置作为基础。但在本次调试立创衡山派的NAND FLASH时,使用d13x_demo88-nand建立的配置,怎么修改都无法成功,我怀疑官方的d13x_demo88-nand开发板配置存在问题。
我决定扭转思路,采取以下方法进行了调整:
1、基于立创衡山派的开发板配置,通过scons --add-board建立自己的开发板配置,我建立的开发板是JLC-HMI,此时有baremetal和rtthread两个deconfig文件,以及一个自己开发板的文件夹,里面还有其它的配置文件;
2、将两个deconfig文件放入JLC-HMI文件夹中,复制到别处存放;
3、对官方的d13x_demo88-nand进行同样操作,将文件夹复制到别处存放;
4、利用代码对比工具,逐个、逐行对比官方SDK 1.1.2中d215-demo88-nand和d215-demo88-nor的各个配置文件差异点,将d13x_demo88-nand对应位置的内容复制到JLC-HMI的配置文件中;
5、对于d215-demo88-nand和d215-demo88-nor配置文件中无差异的部分,即使JLC-HMI的配置与d13x_demo88-nand不同,也不要做修改;
6、为什么是d215?SDK总是在不断完善的,越新的SDK、越新的芯片内容出错的几率越小。但SDK能用就不要升级,匠心创的SDK升级跟LVGL升版本似的,指不定哪里就多出了新的坑
启动时有错误:"Failed to get mtd config",应该是分区配置有问题
使用最新的SDK进行配置,还是一样没办法输出图像,启动时没有报错了
Pre-Boot Program ... (24-12-25 18:16 16 03 6811eb4)
SPINAND
cs=0, phase=3
cs=1, phase=3
Psram_init done.
goto run SPL
[E] heap_init()95 heap_init: region 2 addr err. start = 0x0, end = 0x0
tinySPL [Built on Jan 15 2025 19:50:54]
[E/USB] get id gpio err.
Reboot action: Watchdog-Reset, reason: Command-Reboot
[I/USB] EHCI HCIVERSION:0x0100
[I/USB] EHCI HCSPARAMS:0x001111
[I/USB] EHCI HCCPARAMS:0xa010
[I/USB] EHCI ppc:1, n_ports:1, n_cc:1, n_pcc:1
[I/USB] EHCI uses companion controller for ls/fs device
[I/USB] OHCI hcrevision:0x110
[I/USB] OHCI n_ports:1
qspi0 freq (input): 99000000Hz
qspi0 freq ( bus ): 99000000Hz
Start-up from os
Selecting default config 'Luban-lite firmware'
spl read: 1535168 byte, 93239 us -> 16078 KB/s
CRC32 verify OK.
No config partition
1364579 : Run APP
_ _ ___ ___ _ _
/ \ _ __| |_|_ _|_ __ / __| |__ (_)_ __
/ _ \ | '__| __|| || '_ \| | | '_ \| | '_ \
/ ___ \| | | |_ | || | | | |__| | | | | |_) |
/_/ \_\_| \__|___|_| |_|\___|_| |_|_| .__/
|_|
Welcome to ArtInChip Luban-Lite 1.1.2 [D13x Inside]
Image version: 1.0.0
Built on Jan 15 2025 19:56:40
01-01 08:12:11 I/PWM: ArtInChip PWM loaded
01-01 08:12:11 I/touch: rt_touch init success
01-01 08:12:11 I/gt911: touch device gt911 init success
[I] aic_find_panel()103 find panel driver : panel-rgb
[I] aicfb_probe()1022 fb0 allocated at 0x401942e0
[I] hal_ge_init()342 cmd queue hal, cmdq buffer size = 2048
[I] hal_ge_init()400 dither line phys: 0x4030BB80
[I] aic_sdmc_clk_init()562 SDMC1 sclk: 49500 KHz, parent clk 792000 KHz
01-01 08:12:12 I/SDMC: SDMC1 BW 1, sclk 49500 KHz, clk expt 400 KHz(act 399 KHz), div 2-62
[I] aic_sdmc_probe()692 SDMC1 driver loaded
qspi0 freq (input): 99000000Hz
qspi0 freq ( bus ): 99000000Hz
[I] spinand_info_read()475 find raw ID cd7171cd
[I] spinand_flash_init()526 Enabled BUF, HWECC. Unprotected.
01-01 08:12:12 I/WDT: ArtInChip WDT loaded
01-01 08:12:12 E/DFS: mount fs[elm] on /sdcard failed.
Boot device = 5(BD_SPINAND)
Mount APP in blk blk_rodata
Reboot action: Watchdog-Reset, reason: Command-Reboot
Startup time: 1.674 sec
Mount APP in blk blk_data
[ND]nftl start:320,51
[ND]nftl ok!
momo /> LwIP startup error!, Make sure you have enabled gmac or wlan
01-01 08:12:12 I/SDMC: SDMC1 BW 1, sclk 49500 KHz, clk expt 400 KHz(act 399 KHz), div 2-62
lvgl is occupying gt911 device
id = GT911
range_x = 800
range_y = 480
point_num = 5
嫌弃SPI-NOR下载的速度太慢,我把衡山派上的FLASH换成了SPI NAND,并基于官方的demo88-nand配置重新生成了开发板配置,仅在menuconfig里修改了RGB显示相关的参数。烧录固件后,user led正常闪烁,但更换flash前一切正常的屏幕却没有图像输出,连color block都没有,只有背光亮了。按文档教程尝试了Display的调试,屏幕也没有任何输出,有大佬尝试过类似更换flash的操作吗
以下是编译固件的输出
Image header is generated.
Meta data for image components:
Meta for image.updater.psram offset 0x1800 size 0x7010 (28688)
Meta for image.updater.spl offset 0x9000 size 0x3e810 (256016)
Meta for image.info offset 0x0 size 0x800 (2048)
Meta for image.target.spl offset 0x48000 size 0x3e810 (256016)
Meta for image.target.env offset 0x87000 size 0x1000 (4096)
Meta for image.target.os offset 0x88000 size 0x10e800 (1107968)
Meta for image.target.rodata offset 0x196800 size 0xa99000 (11112448)
Meta for image.target.data offset 0xc2f800 size 0x10000 (65536)
Packing file data:
usbupg-psram-init.aic
bootloader.aic
bootloader.aic
env.bin
d13x_os.itb
rodata.fatfs
data.fatfs
Image file is generated: F:\Embedded\Artinchip\lckfb-hspi-d133ebs\luban-lite\output/d13x_JLC-HMI_rt-thread_HMI/images/d13x_JLC-HMI_page_2k_block_128k_v1.0.0.img
以下是烧录、启动时的串口输出信息
Pre-Boot Program ... (24-08-30 16:16 9ac5e6f)
USB/UART
PSRAM already initialized
goto run SPL
tinySPL [Built on Jan 14 2025 22:40:20]
Reboot action: Warm-Reset, reason: External-Reset
Init UPGMODE:
Full disk upgrade
UPGMODE: Full disk upgrade
Firmware Component:
name: image.info
partition:
attr: required
Media: RAM(0)
qspi0 freq (input): 99000000Hz
qspi0 freq ( bus ): 99000000Hz
Firmware Component:
name: image.target.spl
partition: spl
attr: mtd;required
Media: SPI_NAND(2)
Found good block 0
Found good block 1
Found good block 2
Found good block 3
Found good block 0
Found good block 1
Found good block 2
Found good block 3
Firmware Component:
name: image.target.env
partition: env;env_r
attr: mtd;optional
Media: SPI_NAND(2)
Firmware Component:
name: image.target.os
partition: os
attr: mtd;required
Media: SPI_NAND(2)
Firmware Component:
name: image.target.rodata
partition: rodata
attr: mtd;optional
Media: SPI_NAND(2)
Firmware Component:
name: image.target.data
partition: data
attr: block;optional
Media: SPI_NAND(2)
[ND]nftl start:320,51
[ND]nftl ok!
Going to reboot ...
Pre-Boot Program ... (24-08-30 16:16 9ac5e6f)
SPINAND
cs=0, phase=4
cs=1, phase=2
Psram_init done.
goto run SPL
tinySPL [Built on Jan 14 2025 22:40:20]
Reboot action: Watchdog-Reset, reason: Command-Reboot
[W] usbh_get_connect_id()107 usb 0 port change wait failed.
qspi0 freq (input): 99000000Hz
qspi0 freq ( bus ): 99000000Hz
Start-up from os
Selecting default config 'Luban-lite firmware'
spl read: 1104472 byte, 65416 us -> 16487 KB/s
Failed to get mtd config
337773 : Run APP
_ _ ___ ___ _ _
/ \ _ __| |_|_ _|_ __ / __| |__ (_)_ __
/ _ \ | '__| __|| || '_ \| | | '_ \| | '_ \
/ ___ \| | | |_ | || | | | |__| | | | | |_) |
/_/ \_\_| \__|___|_| |_|\___|_| |_|_| .__/
|_|
Welcome to ArtInChip Luban-Lite 1.1.0 [D13x Inside]
Image version: 1.0.0
Built on Jan 14 2025 23:00:47
01-01 08:09:36 I/PWM: ArtInChip PWM loaded
01-01 08:09:36 I/touch: rt_touch init success
01-01 08:09:36 I/gt911: touch device gt911 init success
[I] aicfb_find_component()610 find component: artinchip-de
[I] aicfb_find_component()610 find component: artinchip-rgb
[I] aic_find_panel()94 find panel driver : panel-rgb
[I] aicfb_probe()958 fb0 allocated at 0x40123620
[I] hal_ge_init()342 cmd queue hal, cmdq buffer size = 2048
[I] hal_ge_init()400 dither line phys: 0x4029AE80
[I] aic_sdmc_clk_init()560 SDMC1 sclk: 49500 KHz, parent clk 792000 KHz
01-01 08:09:36 I/SDMC: SDMC1 BW 1, sclk 49500 KHz, clk expt 400 KHz(act 399 KHz), div 2-62
[I] aic_sdmc_probe()683 SDMC1 driver loaded
qspi0 freq (input): 99000000Hz
qspi0 freq ( bus ): 99000000Hz
[I] spinand_info_read()472 find raw ID cd7171cd
[I] spinand_flash_init()523 Enabled BUF, HWECC. Unprotected.
01-01 08:09:36 I/WDT: ArtInChip WDT loaded
01-01 08:09:36 E/DFS: mount fs[elm] on /sdcard failed.
Boot device = 5(BD_SPINAND)
Mount APP in blk blk_rodata
Mount APP in blk blk_data
[ND]nftl start:320,51
[ND]nftl ok!
info: cmd ring buf size:1920
lvgl is occupying gt911 device
id = GT911
range_x = 800
range_y = 4m
哦,你这是RTOS环境,那简单啦,不改触摸配置,在低层触摸事件低层做分辨率转换,将小分辨率强行拉到大分辨率上即可。
我在BSP的gt911触摸测试例程里,通过rt_device_control(dev, RT_TOUCH_CTRL_SET_X_RANGE, &x)和rt_device_control(dev, RT_TOUCH_CTRL_SET_Y_RANGE, &y)强行修改了触摸分辨率,串口打印rt_touch_info变量中的分辨率确实是800x480。但触摸会完全失效,连滑动都失灵,不确定是不是有更底层的逻辑冲突。现在准备直接换触摸屏了,就是1mm间距的4.3寸800x480触摸屏太难找,基本都是0.5mm间距的引脚
触摸芯片在初始化的时候可以修改分辨率吧。
我是在RT-Thread上运行的,试着通过RT_TOUCH_CTRL_SET_X_RANGE和RT_TOUCH_CTRL_SET_Y_RANGE来设置分辨率,运行官方test_gt911测试例程后串口输出的分辨率确实变了,但是屏幕点击完全没反应。如果不通过RT-Thread的touch框架进行分辨率修改,虽然触摸点坐标不对,但是滑动功能正常。
匠心创在Luban-lite的BSP里用的就是RT-Thread的gt911驱动软件包,在整个BSP下全局搜索,都没找到触摸默认分辨率的设置。
而gt911驱动里写入的分辨率是字节形式,我查了下,应该是1024x600,也跟默认的480x272分辨率对不上
这个问题最终在B站一位UP那得到了粗暴的解决方案,他从FAE那获取的一个SDK包编译没有此问题,有兴趣的可以联系UP获取SDK,参考D133昆仑派开发板如何编译lvgl内置Demo
页次: 1