D1s运行自制立即式UI框架--XUI
Best posts made by tripod9
-
利用XFEL直接引导xboot
在缺乏工具前,都是利用已有的软件,间接开发,现在有了专用工具,就无需像那么折腾了,仅需在板子上电时,按着fel按键,敲一下如下,指令就可以将xboot运行在DDR中,复杂的开发工作,从此变得简单起来。
sudo xfel ddr ddr3 sudo xfel write 0x40000000 output/xboot.bin sudo xfel exec 0x40000000
补充下,xboot代码的获取与编译,工具链随便了,你想用玄铁的也行,啥都可以的。
git clone https://github.com/xboot/xboot/ -b test-d1 CROSS_COMPILE=riscv64-linux-gnu- PLATFORM=riscv64-d1 make -j3
借用下晕哥的图,在晕哥的努力下,XFEL现在有了windows版了,方便使用win做开发的同学。
-
全志D1裸奔工具XFEL
工欲善其事,必先利其器,全志D1沿用传统设计思路,brom里面集成了FEL模式,这个模式是一个很有用的模式,可以烧录,测试,能干的事情很多,本来这种工具也是有成熟的可用,比如:sunxi-fel,基本算裸奔必用的开发工具,但突然来了个RISCV版的FEL,sunxi-fel就无能为力,其深度绑定ARM实现,里面的payload都是arm,根本没有riscv,没有工具,想正向开发,比登天还难。
仔细分析D1的fel,发现其烧写工具跟原先的一致,没有做任何更新,那也就是说,fel标准协议其实是指令集无关的,有了这个信息就好办了,我们完全也可以创建一个指令集无关的fel工具,阅读sunxi-fel,发现其改造困难,基本深度绑定,没有太多开发的意义,还不如重新开发,轻装上阵,遂有了此工程。
此工具理论上全志全系列芯片都可以支持,不管是arm32,arm64,riscv64,重点目标是riscv64的D1支持,设计时避免过多hack,增强适应性,最大的特色借用xfel工具可以直接初始化DDR。有了直接能初始化DDR的fel工具,开发裸机就没有任何难度了,当单片机耍。
xfel(v1.0.1) - https://github.com/xboot/xfel usage: xfel help - Print this usage xfel version - Show brom version xfel hexdump <address> <length> - Dumps memory region in hex xfel dump <address> <length> - Binary memory dump to stdout xfel exec <address> - Call function address xfel read32 <address> - Read 32-bits value from device memory xfel write32 <address> <value> - Write 32-bits value to device memory xfel read <address> <length> <file> - Read memory to file xfel write <address> <file> - Write file to memory xfel reset - Reset device using watchdog xfel sid - Show 128-bits sid information xfel jtag - Enable jtag debug xfel ddr [type] - Initial ddr controller with optional type xfel spinor - Detect spi nor flash xfel spinor read <address> <length> <file> - Read spi nor flash to file xfel spinor write <address> <file> - Write file to spi nor flash xfel spinand - Detect spi nand flash xfel spinand read <address> <length> <file> - Read spi nand flash to file xfel spinand write <address> <file> - Write file to spi nand flash
-
Reply: 全志D1裸奔工具XFEL
@mangogeek 已添加Winbond SPI NAND的支持,因为华邦的ID是3个字节,其他的SPI NAND芯片是两个字节的ID,现在代码已做了扩展。
/* Winbond */ { "W25N512GV", SPINAND_ID(0xef, 0xaa, 0x20), 2048, 64, 64, 512, 1, 1 }, { "W25N01GV", SPINAND_ID(0xef, 0xaa, 0x21), 2048, 64, 64, 1024, 1, 1 }, { "W25M02GV", SPINAND_ID(0xef, 0xab, 0x21), 2048, 64, 64, 1024, 1, 2 }, { "W25N02KV", SPINAND_ID(0xef, 0xaa, 0x22), 2048, 128, 64, 2048, 1, 1 },
Latest posts made by tripod9
-
Reply: T113裸跑不能产生中断请教:
@l13819506056 频率是1.008G ,是否方便提供一个简单的可以测试中断的裸机程序。我debug下,现在我实验后发现总是产生swi异常,不知哪里在触发。
-
Reply: T113裸跑不能产生中断请教:
@l13819506056 我实验T113中断时,只要一中断,就会产生SWI异常,很神奇,我是裸奔,根本没执行swi相关指令。一直理解不了。
-
Reply: T113烧录R528的img文件失败
@yuzukitsuru
找到个这个函数,是R528里面的,id_judge_fun,有谁发现什么机关,需要找多个平台的id_judge_fun函数来对比,估计才能看出名堂。uint id_judge_fun(uint param_1) { uint uVar1; if ((_DAT_01c15004 & 7) == 0) { uVar1 = disturb_coding(param_1,1); return uVar1; } return 0; } uint disturb_coding(uint param_1,int param_2) { int iVar1; iVar1 = crc_16(param_1,param_2); return param_1 + param_2 | iVar1 << 0x10; } void crc_16(uint param_1,int param_2) { uint uVar1; uint uVar2; short sVar3; uVar1 = param_1 ^ param_2 << 8; sVar3 = 8; do { uVar2 = uVar1 & 0x8000; uVar1 = (uVar1 & 0x7fff) << 1; if (uVar2 != 0) { uVar1 = (uVar1 ^ 0xffff8005) & 0xffff; } sVar3 = sVar3 + -1; } while (sVar3 != 0); return; }
-
Reply: D1/D1S 的区别是啥?
@kirin 在 D1/D1S 的区别是啥? 中说:
wifi/蓝牙可以通过外接无线芯片实现,比如哪吒板子上外接的就是XR829,可以做2.4Gwifi/BT.
预告:明年全志将会推出内置wifi/BT的RISC-V芯片,针对AIoT市场。这个wifi/BT芯片,是MCU级别还是SOC级别,但愿内存不要太小,否则就跟市面上的没有区别了,可选余地很多。
-
Reply: 又在全志d1开发板上玩ncnn
新版本工具链,在某些老电脑上会出现编译器内部错误,2.0.3版本正常,但这之后的全部异常了。
Compiler executable checksum: 91a728100f71f55a898c866a0b8bf7a7 main.c: In function 'my_strtod': main.c:37:3: internal compiler error: Illegal instruction 37 | number = number * 10. + (*p - '0'); | ^~~~~~ Please submit a full bug report, with preprocessed source if appropriate. See <https://gcc.gnu.org/bugs/> for instructions.