IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 7862之uboot-lcd的流程及移植 -> 正文阅读

[嵌入式]7862之uboot-lcd的流程及移植

在开机的时候首先进行板级的初始化(U-boot/arch/arm/lib/board.c),现在flash中跑board_init_f(),划分一部分Mermory用来跑U-BOOT,划定范围之外的Mermory在U-boot的时候是不能被操作的。同时预留给malloc() arena、U-Boot code, data & bss、VFD display、LCDdisplay、TLB table、PRam、logBuffer等空间。

接下来走到RAM中的board_init_r(),建立片选、初始化串口、初始化NAND、MMC、flash,然后到do_cboot(NULL, 0, 1, NULL); // 进入启动函数,接着调用

  • board_boot_mode_regist(boot_mode_array)
  • 然后到boot_mode_array 选择模式,启动进入正常的模式:uis7862s_1h10_normal_mode();
  • vlx_nand_boot
  • drv_lcd_init?对lcd进行一个常规的初始化
  • ?lcd_init?调用 lcd_ctrl_init 来完成lcd的初始化,另一方面通过lcd_clear()来完成控制输出的backcolor和frontcolor,并且将LOGO解压并放入Buffer
  • ?lcd_ctrl_init 初始化lcd
    • sprdfb_probe 提供LCD具体驱动的入口
    • sprd_panel_probe 以数组的形式轮询每款屏read_id的值,也就是读取MIPI屏寄存器里的id值,读取成功返回0,也就是找到该款屏幕驱动,然后初始化,没找到就继续轮询,直到找到或者最后没找到会设置一个默认加载屏幕的驱动。
  • lcd_splash(LOGO_PART) 刷logo
  • set_backlight(backlight_set) 亮背光

uboot移植:

  • 首先到 bsp/bootloader/u-boot/drivers/video/sprd/lcd/ 目录下复制一份之前移植过的lcd屏驱动:lcd_xxx_video.c。
    • 修改 lcd_xxx_video.c里面的 init_data[] 初始化命令?
    • 修改lcd驱动名panel_driver xxx_mipi_driver
    • 修改proch值和分辨率的值
    • 修改 pixel_clk=(width+hfp +hbp +hsync )*(height +vfp +vbp +vsync )*fps,? ? ? ? ? ? ? ????????phy_freq=?(pixe_lclk * 24 * 1.2)/lane_num
    • 修改read_id函数,如果是正确读取的id则返回0,表示找到该屏
    • 修改参数.lcd_name = "lcd_xxx_mipi_fhd", 使得内核找到该屏的dtsi驱动
  • 新增LCD宏,bsp/bootloader/u-boot/include/configs/uis7862s_1h10.h,新增#define CONFIG_LCD_xxx_MIPI_FHD
  • bsp/bootloader/u-boot/drivers/video/sprd/lcd/Makefile 把 lcd_xxx_video.c 编译规则加到Makefile里面:obj-$(CONFIG_LCD_xxx_MIPI_FHD) +=?lcd_xxx_video.o
  • bsp/bootloader/u-boot/drivers/video/sprd/lcd/panel_cfg.h,新增的驱动id:
    extern struct panel_driver xxx_mipi_driver;
    
    #ifdef CONFIG_LCD_xxx_MIPI_FHD
        {
            .lcd_id = 0x1111,//这个id通过lcd_id_to_kernel 传给kernel
            .drv = &xxx_mipi_driver,
        }

kernel移植比较简单

  • arch/arm64/boot/dts/sprd/lcd/目录下复制之前的dtsi屏驱动

  • 修改名称lcd_xxx_mipi_fhd,把uboot的proch、分辨率、pixel_clk、phy_freq、初始化命令修改到当前的dtsi文件

  • 这个驱动的dtsi就像 .h文件一样,将文件名加到改平台的dtsi文件中去。

移植结束后,看是否点亮该屏。如果屏幕没有亮,请检查:

  • 查看log读到的read_id是否正确。

  • 查看初始化命令 init_data 是否全部写对。

  • 查看proch值、phy_freq、pixel_clk是否正确。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-05-09 12:53:52  更:2022-05-09 12:54:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:38:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码