在开机的时候首先进行板级的初始化(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是否正确。

proch值:

  • HFP:水平后沿:在每行或者每列像素数据开始输出时要插入的像素时钟周期。

  • HBP:水平前沿:在每行或每列的像素结束到LCD行时钟输出脉冲之间的像素时钟。

  • HSYNC:行(水平)同步脉宽

  • VFP:垂直前沿:本帧数据输出结束到下一个垂直同步周期开始之前的无效行数。

  • VBP:垂直后沿:在垂直同步周期之后帧开头时的无效行数。

  • VSYNC:垂直同步脉宽

7862之uboot-lcd的流程及移植相关推荐

  1. 最详细的U-BOOT源码分析及移植

    本文从以下几个方面粗浅地分析u-boot并移植到FS2410板上: 1.u-boot工程的总体结构 2.u-boot的流程.主要的数据结构.内存分配. 3.u-boot的重要细节,主要分析流程中各函数 ...

  2. 展讯平台 LCD(Mipi)移植步骤及问题归纳

    PortingGuide Backlight 背光的硬件设计有两种情况:  1. 内置并联背光  2. 外置串联背光  对于 1 的情况,步骤如下:  1.移植对应的 lcd 驱动.  2.设置u-b ...

  3. Uboot专题(一)—— 移植NXP官方Uboot(2016.03版本)

    linux系列目录: linux系统移植篇(二)-- Uboot使用介绍 Uboot专题(一)-- 移植NXP官方Uboot(2016.03版本) 文章目录 一.编译NXP官方uboot 1.获取ub ...

  4. 16.U-boot的工作流程分析-2440

    16.U-boot的工作流程分析-2440 分析的流程: 程序入口 第一阶段程序分析 第二阶段程序分析 2440开发板: 1.uboot的入口: 要看uboot工程的入口,首先打开顶层目录的Makef ...

  5. uboot源码分析(1)uboot 命令解析流程简析

    uboot 命令解析流程简析 uboot正常启动后,会调用main_loop(void)函数,进入main_loop()之后,如果在规定的时间(CONFIG_BOOTDELAY)内,没有检查到任何按键 ...

  6. uboot配置,编译,移植

    文章目录 前言 1.文件及文件夹 2.README文件 (1).配置及编译 (2).镜像格式 3.sd_fusing文件夹 4.主Makefile 总结 5.mkconfig 6.config.mk ...

  7. u-boot的启动流程分析(一)

    这周翻了翻u-boot-Xilinx的源码,结合着网上看的对cortexA8.A9的u-boot的源码分析,再结合自己在Xilinx上下的u-boot源码,试着对u-boot的启动流程进行一下分析,也 ...

  8. 【嵌入式】MCU(HC32F460)+SPI接口LCD液晶屏ILI9341 移植emWin记录1----点亮LCD屏

    目录 一 SPI屏的接线 二 SPI屏驱动初始化 三 SPI屏点亮 四 附录 一 SPI屏的接线 SPI屏的特点在于接线简单,只需要四根SPI线以及几个GPIO口即可驱动工作,但是由于非并口的,所以当 ...

  9. 我所理解的高通UEFI之display的流程和移植

    UEFI的流程 UEFI跟uboot一样都是在在kernel加载启动之前,正确的引导指定启动服务,并向内核传递信息,代替原先的uboot.它包含了上电.驱动实现,以及os环境的建立和应用程序(类似于f ...

最新文章

  1. python脚本控制手机app_Python+Appium学习之启动手机APP或者浏览器
  2. Qt vlc视频开发libvlc_new返回空的问题
  3. Python编程基础:第五十八节 线程Threading
  4. Linux学习之云服务器搭建嵌入式Linux开发环境
  5. 漫画:程序员每天的6场战斗
  6. golang channel的一些总结
  7. YUV格式学习:YUV444转换RGB24
  8. python7.2抛出自定义异常
  9. 脑电波连接计算机游戏,脑电波也能“玩游戏”?这个“挑战杯”全国一等奖告诉你这都不是事儿...
  10. 递归实现指数型枚举(递归)
  11. Python-docx实战:同事要我帮忙补写178份日报!别吧
  12. 什么是signal(SIGCHLD, SIG_IGN)函数
  13. 转载:BP(反向传播算法)公式推导及例题解析
  14. QList添加自定义结构体
  15. 自定义view,移动view的时候抖动很厉害的解决方案
  16. 京东上传图片到JD API接口
  17. 高新波:异质图像合成与识别
  18. 当前使用的windows版本不支持该处理器,系统将错失重要的安全更新怎么办
  19. 认知无线电网络中的用户
  20. 计算机视觉之卷积神经网络原理

热门文章

  1. Mysql 学习笔记(快速复习)
  2. 西门子usb ppi通讯电缆驱动
  3. 服务启动报错:Consider defining a bean of type ‘.RestTemplate‘ in your configuration
  4. Lua游戏逆向及破解方法介绍
  5. 2021年京东平台双十一预售成交额(预售榜数据)哪里看?
  6. 10个基于Java的CMS网站内容管理系统
  7. 360安全卫士与腾讯QQ打得如此火热,引发用户的思考。
  8. (一)Flutter 学习之 Dart 变量和类型系统
  9. 详解Spark运行模式(local+standalone+yarn)
  10. 运行命令七武器助你驰骋Windows