老早就开始调F1C的TVD了。当时查找了好多资料,发现资料比较少,查找到csdn的一片文章有写A10/A20的TVD驱动代码介绍。
然后赶紧copy下来,编写了驱动的大概。然后发现并不能用,中断都能不能进入(经常调驱动,个人认为,一个外设,如果调到能够进入中断,意味着已经成功一半了,哈哈)
后来看了下melis的tvd.drv(这个是melis里面编译成动态库的格式,需要通过melis的专门机制去加载的),里面的地址和A20完全不一样。于是乎就自己一个一个对代码的对应数值。整理了一个寄存器对照表,然后一顿操作,发现能够进入驱动了,嘿嘿
赶紧把数据显示一下,有些东西显示,但是画面不对,还有就是颜色也不对,离正常的画面还是差很远
后面又隔了很长一段时间,直到有一天查找资料查找到R40i竟然有对TVD寄存器进行介绍,就是下面这个
Allwinner_R40_User_Manual_V1_0.pdf
然后仔细看了一下里面的寄存器,对照一下之前的寄存器对照表,发现R40和A20还有F1C100s都不一样。。。。。没辙,只能自己摸索了,还是继续参考tvd.drv里面的汇编进行对应配置的修改,同时也参考github网上的sunxi linux资料。
经过几天晚上的比对修改,画面终于显示了,还移植了个YUV420转RGB的代码。整了好一会颜色。出来的效果如下(因为顺手的就是这个牌子,并不是为了暗示什么哈,,,逃走()
目前还有些显示的问题,就是显示有锯齿,不知道是不是因为隔行和逐行配置的问题。后面也没有空再研究了,发出来给大伙探讨探讨,解决了可以发在坑网里面,又可以水一贴
附上当时整理的对应列表
F1C100S 和A20 TVD寄存器对应关系
0x0F08,0x0008
0x0F0C,0x000C
0x0F10,0x0010
0x0F14,0x0014
0x0F18,0x0030
0x0F1C,0x001C
0x0F24,0x0024
0x0F28,0x0028
0x0F2C,0x002C
0x0F44,0x0044
0x0F4C,0x004c
0x0F54,0x0054 [不确定]
0x0F6C,0x006C
0x0F74,0x0074
0x0F80,0x0080
0x0F84,0x00840x000C,0x0018
0x0014,0x00340x008c,0x0134
0x0088,0x0130
0x0E2C,0x52C
0x0094,0x0140
0x009c,0x01480x0080 //y 通道地址?
0x0084 //U 通道地址?
离线
致谢
xboot提供的xboot项目https://github.com/xboot/xboot
达克罗德 的裸机工程 F1C100S裸奔framebuffer+PWM+GPIO驱动
离线
抱歉,我无法下载。你能把它放在你的github上吗?
为什么下不了,应该积分够了吧
离线
微凉大侠,研究太深入了,感觉全志的门快被你打开了
话说,usb主机驱动,有没有什么参考的好办法,真的只能看musb那个资料吗???
usb主机之前调出来了,参考bsp linux。然后musb的手册作为辅助
离线
@alizx
参考
https://whycan.com/t_5755.html
最近编辑记录 微凉VeiLiang (2023-11-12 21:22:17)
离线