页次: 1
有兴趣的朋友,可以一起研究,QQ:31972145
1、我这里只研究祼机,跑linux的,可以请教别的大神。
2、需要对硬件做一点小改造:
(1)、将原来的flash,换成W25Q128或W25Q64,尽量大,为的是以后存放图片,这个板没有SD卡接口。
(2)、板上空着RST和BOOT两个按钮,自己找个合适的换上。
(3)、将USB线引出,正极直接引到板子的+5V处。
(4)、如果想从串口下载APP,则还需要将串口线引出,不用串口,直接烧APP到flash,也是可以的。
硬件改造完成后的图:
显示一张样片
(4)、代码会陆续更新,包括:bootload、uartboot(用于从串口下载app运行)、SSD2828自测、LCD显示、模拟flash为U盘(目的是存放图片),JPEG显示。xr819目前还没搞定,如果有兴趣,我们可以一起研究。
微凉VeiLiang 说:可以的,看我之前的帖子
翻了一下你的帖子,感谢分享。
有没有不加水印的静态库文件?。
可以研究下乌克兰友人的代码: https://whycan.com/t_8114.html ,可以运行。
感谢国际友人Ozelot为我们提供了全网唯一一份代码(至少我只找到这份)
原贴: https://whycan.com/t_8114.html
我也是小白,为了让更多人理解这份代码,我把我的理解写出来,仅供大家参考:
1、scr_enable()函数,是f1c100s的LCD驱动部份,如果你已经有了LCD驱动,可以使用自己的。毕竟你的LCD和作者的,可能不一样
2、int parse_jpeg(struct jpeg_t *jpeg, const uint8_t *data, const int len),是获取JPG图片的参数:
jpeg 解码参数结构体
*data JPG图片的地址
len JPG图片的长度
3、void decode_jpeg(struct jpeg_t *jpeg, u16 *frame),解码图片函数
jpeg 解码参数结构体
frame 解码后的图片存放地址,这里应该是RGB565的格式
4、void fr_enable (struct FRAME *fr),图参重新使能,作者使用了缓存显示,就是先把解码放到一片内存,然后重新指定layer的地址,这样就可以显示图片的时候把下一张解码。
5、我觉得为了体现硬解的速度,可以不用缓存机制,在decode_jpeg的frame,直接指定为LCD的显存。这样可以更加直观的看到硬解的过程。使用了缓存,那么软解JPG也可以在显示第1张图片的时候,解码第2张,然后切换缓存,一样的是“立即刷新”
6、作者把两个JPG用数组存放在两个H文件中。解码函数是一次处理一整张图片,我猜想应该也可以像stm32H7那样,一点一点读,一点一点解。但由于f1c100s的内存足够,所以没必要这么做。
7、理解上述代码以后,就可以从SD卡或flash中读取图片,使用硬解了。这个芯片的速度快,软件一般在300ms左右,而硬解在10个ms以内。
8、由于硬解的资料太少,连手册上都隐藏了这部份寄存器,所以研究的空间不大。大家互相学习,有交流可以联系我,QQ:31972145
下载地址: https://gitee.com/kmmyk/soc
提示:
1、flash不能用nandflash,需要换成norflash,如W25Q系列,2M--32M,都可以
2、换好芯片后,进入FEL模式,用sunxifel ver 来读,读到信息再往下
3、编译环境是arm-none-eabi-gcc,下载地址: https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/10.3-2021.10/gcc-arm-none-eabi-10.3-2021.10-win32.zip ,在linux下编译,请下载相应的版本。
4、tools下有make工具,source/uartboot下运行make all就能得到bin文件,还需要用mksunxi uartboot.bin命令处理魔术头。
5、如果想直接烧写,我已经将uartboot.bin放在tools里,可直接烧写尝试
6、在source/app下,我放了一个LED工程,执行make all后,会得到led.bin,用串口115200助手下载到芯片,就能闪灯(PA0),同样在tools里,放了这个bin文件,可直接尝试。
7、如果有不清楚的,可留言或是QQ我:31972145,大家共同学习。
请问,你是否驱动了SSD2828?
如果数组小于1K,程序正常,能收到串口发送的数据
但如果大于1K,串口收到的数据就为0
请问,这与连接文件有关系吗?链接文件如下:
OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
OUTPUT_ARCH(arm)
ENTRY(_image_start)
STACK_UND_SIZE = 0x100;
STACK_ABT_SIZE = 0x100;
STACK_IRQ_SIZE = 0x100;
STACK_FIQ_SIZE = 0x100;
STACK_SVC_SIZE = 0x400;
HEAP_SIZE = 0x00100;
MEMORY
{
sram : org = 0x00000000, len = 128K
}
SECTIONS
{
.text :
{
PROVIDE(__image_start = .);
*(.image_header)
PROVIDE(__text_start = .);
*(.vectors)
*(.text*)
PROVIDE(__text_end = .);
} > sram
页次: 1