一、裸机修改

  之前测试用的屏幕是480*272的分辨率,现在要换成800*480的屏,因此要对软件代码进行修改。

  对于裸机驱动而言,主要有两个点需要注意,一个是屏幕分辨率变了,因此初始化的时候与屏幕分辨率有关的寄存器需要改。但是改了分辨率之后显示出来的图像能明显看到闪烁,这是因为软件设置LCD的时钟来自HCLK,HCLK的频率是133MHz,在软件中又设置了VIDCON0寄存器的CLKVAL_F域的值,如下图:

  在480*272的屏的软件中将该域的值设置为了14,如下图:

  因此LCD的时钟频率为133/15=8.87MHz,8870000/480/272得到约每秒67帧(当然实际上把消影信号去掉后会更少一些),这个时候显示屏是不闪烁的,如果换成了800*480的屏却不改时钟频率的话,得到8870000/800/480约23帧,算上消影的话得到的帧率肯定达不到23帧,因此肉眼能明显看到屏幕闪烁。具体VIDCON0寄存器的CLKVAL_F域该设置为多少与使用的显示屏有关,我将该域设置为5,则刷新率约57Hz,算上消影的话真实刷新率会低一些,但是肉眼肯定是分辨不出来的。

二、内核修改

  在内核代码中输入make menuconfig,在Device Drivers->Graphics supports->Support for frame buffer devices,这里面有对显示屏的设置,比如Select LCD Type可以选择屏幕分辨率,Select BPP可以选择每个像素包含的位数。选择好之后保存退出。make编译内核,编译完之后再arch/arm/boot目录下会出现zImage就是我们要的内核。

  内核下载参考前章,但我在测试的时候,修改了这些之后屏幕显示有一个问题,就是显示出来的东西和显示屏上的实际坐标并没有对准,显示出来的图像往屏幕右下方移动了。

  我这边是由于消影导致的,需要修改内核源码,drivers/video/samsung/s3cfb_UT_LCD7A.c,如下图几个消影信号的值需要修改:

  我的图像往右下方移了,因此无论是行消影还是场消影都应该调小,具体要设置到多少是能算出来的,但是我不想算了就直接试出来的。我的方法是编写一个测试程序,在屏幕的最边缘绘制一个矩形,当调整程序到能够看见一个完整的矩形的时候就OK了。

最新文章

  1. android 两种实现计时器时分秒的实现,把时间放在你的手中~
  2. struts2配置详解
  3. 如何去各型MCU的官网上下载正确的数据手册
  4. innobackupex的安装
  5. haskell中的cps
  6. yum 安装 php5.6 和 mysql5.6
  7. 如何提高手机APP的用户体验?
  8. (重)POJ 3020Antenna Placement
  9. Leetcode:minimum_depth_of_binary_tree解决问题的方法
  10. jQuery教程详解(一)
  11. 在VSCode中编辑HTML文档时,在Dom标签上写style属性时智能提示的问题
  12. python arvg用法
  13. java的初学感想
  14. Spring-boot集成RabbitMQ踩过的坑
  15. Quartz的时间配置
  16. 【算法和数据结构】_14_小算法_Blank字符替换
  17. POJ3287(BFS水题)
  18. java实现超大整数加减乘除四则运算
  19. (maven项目)使用java -jar命令遇到的小问题|xx.jar中没有主清单或Error:Invalid or corrupt jarfile xx.jar
  20. jquery ajax跨域

热门文章

  1. tkinter + 爬虫 实现影视在线资源系统
  2. Python实现多个pdf文件合并
  3. Autofac的基本使用---4、使用Config配置
  4. IntelliJ IDEA如何用maven命令打jar包
  5. %@ taglib uri="http://java.sun.com/jsp/jstl/core"prefix="c"%报错
  6. BOM主数据-用ECN实现可变BOM
  7. LVS、Nginx和HAProxy区别
  8. 简单4步,利用Prometheus Operator实现自定义指标监控
  9. logback运行时动态创建日志文件
  10. 效率工具 | 快速创建虚拟机,Vagrant真香!