OK6410A 开发板 (五) 1 OK6410A u-boot-2021.01 LCD RGB接口

发布者:colchery最新更新时间:2022-09-27 来源: csdn关键字:OK6410A  开发板  u-boot  LCD  RGB接口 手机看文章 扫描二维码
随时随地手机看文章

u-boot 中的lcd驱动是 在 u-boot lcd驱动框架下的 lcd驱动,包括

lcd 框架

lcd 驱动

代码在

https://github.com/lisider/u-boot/tree/ok6410a

提交id: 54c4f9e1ec8017d51234e5909ca39662a257632d


总体概览

初始化的时候 drv_lcd_init 

    1. 调用 s3cfb 提供的接口函数 做 硬件初始化

    2. 将 panel_info 的信息放到 cons 全局变量中

使用的时候 printf

    1. 调用 cons 的 函数 处理 cons 的 成员变量 将 字符打印到屏幕上 // 本质上是写内存地址


lcd 框架

什么时候开始着手初始化lcd

init_sequence_f

    reserve_video

        /* reserve memory for LCD display (always full pages) */                         

        gd->relocaddr = lcd_setmem(gd->relocaddr);                                       

// 后面的代码中 将 该地址 放入 static struct console_t cons; 中的 fbbase 

        gd->fb_base = gd->relocaddr;

        

static init_fnc_t init_sequence_r[] = {             // common/board_r.c

    stdio_init_tables,  745                            // common/stdio.c

    stdio_add_devices,  822                            // common/stdio.c

    console_init_r,   827                              // common/console.c

    initr_net,        871                              // common/board_r.c

}


    static struct console_t cons;                   // common/lcd_console.c


    stdio_add_devices                               // common/stdio.c

        drv_lcd_init                                // common/lcd.c

            lcd_init                                // common/lcd.c

                lcd_ctrl_init // s3c_fb_init        // arch/arm/mach-s3c64xx/include/mach/lcd.h // drivers/video/s3c_fb.c

                lcd_get_size                        // common/lcd.c

                    panel_info.vl_col               // drivers/video/s3c_fb.c

                lcd_clear                           // common/lcd.c

                    lcd_setcolreg                   // drivers/video/s3c_fb.c

                    lcd_init_console                // common/lcd_console.c

                        cons.fbbase = address;      // addr 来自于 panel_info(drivers/video/s3c_fb.c)

                lcd_enable                          // drivers/video/s3c_fb.c

                lcd_set_col(填充cons)               // common/lcd_console.c

                lcd_set_row(填充cons)               // common/lcd_console.c

                

            lcddev.puts  = lcd_stub_puts;           // common/lcd.c

            stdio_register(&lcddev);                // common/stdio.c

    console_init_r                                  // common/console.c

        gd->flags |= GD_FLG_DEVINIT;                // 该句之后就代表 初始化完成,下一句就可以使用printf 打印到屏上

        

实际上ok6410a uboot-2021.01 在屏上打印的第一句 是 Net: Net  Initialization  Skipped 


lcd console 打印流程

printf                                              // lib/vsprintf.c

    puts                                            // common/console.c

        fputs                                       // common/console.c

            static void console_puts                // common/console.c

                dev = console_devices[file][i];     // common/console.c

                dev->puts(dev, s); // lcd_stub_puts // common/lcd.c


lcd_stub_puts                                       // common/lcd.c

    lcd_puts                                        // common/lcd_console.c

        lcd_putc                                    // common/lcd_console.c

            cons.fp_putc_xy // lcd_putc_xy0         // common/lcd_console.c         // cons.fp_putc_xy(&cons, cons.curr_col * VIDEO_FONT_WIDTH, cons.curr_row * VIDEO_FONT_HEIGHT, c);

            console_newline                         // common/lcd_console.c



lcd_putc_xy0                                        // common/lcd_console.c

    fbptr_t *dst = (fbptr_t *)pcons->fbbase + y * pcons->lcdsizex + x; // pcons 就是 static struct console_t cons;

    *dst++ = (bits & 0x80) ? fg_color : bg_color;


驱动

框架给驱动准备的接口(驱动的出口函数和出口变量)

驱动给框架提供的接口

A 函数

lcd_enable

lcd_ctrl_init // s3c_fb_init

lcd_setcolreg

B 变量

vidinfo_t panel_info


出口函数被调用流程

    stdio_add_devices                               // common/stdio.c

        drv_lcd_init                                // common/lcd.c

            lcd_init                                // common/lcd.c

                lcd_ctrl_init // s3c_fb_init        // arch/arm/mach-s3c64xx/include/mach/lcd.h // drivers/video/s3c_fb.c ------------

                lcd_get_size                        // common/lcd.c

                    panel_info.vl_col               // drivers/video/s3c_fb.c                                       ------

                lcd_clear                           // common/lcd.c

                    lcd_setcolreg                   // drivers/video/s3c_fb.c                                   ----------------

                    lcd_init_console                // common/lcd_console.c

                        cons.fbbase = address;      // addr 来自于 panel_info(drivers/video/s3c_fb.c)                      ----

                lcd_enable                          // drivers/video/s3c_fb.c                               ------------

                lcd_set_col(填充cons)               // common/lcd_console.c

                lcd_set_row(填充cons)               // common/lcd_console.c

                

[1] [2]
关键字:OK6410A  开发板  u-boot  LCD  RGB接口 引用地址:OK6410A 开发板 (五) 1 OK6410A u-boot-2021.01 LCD RGB接口

上一篇:OK6410A 开发板 (四) 2 OK6410A 裸机 ethernet SRAM接口
下一篇:OK6410A 开发板 (四) 1 OK6410A 裸机LCD RGB接口

推荐阅读最新更新时间:2024-11-05 11:08

恩智浦将LCD支持功能集成进ARM7微控制器系列
LPC2478和 LPC2470微控制器支持高带宽外设的同步操作,同时显著降低功耗 荷兰,爱因霍芬,2007年3月1日 ——恩智浦半导体(前身为飞利浦半导体)今日发布其全新的LPC2478微控器,这是业界唯一的提供集成的LCD支持的基于闪存的ARM7? MCU。同时推出的LPC2470是其无闪存版本。全新的微控制器配有双路 ARM? 高速总线(AHB),可实现多种高带宽外设(包括LCD、10/100以太网、USB主机/OTG/设备、和两个CAN通道)的同步操作。这一全新的恩智浦微控制器系列显著降低了成本、空间和功耗,是广泛应用于LCD面板并需要网络或因特网连接的工业、消费、零售和医疗系统产品的理想之选。 恩智浦半导体微控制器
[新品]
利用U-Boot实现uClinux向S3C44B0的移植
1 引言 S3C44B0是Samsung公司推出的一款为手持设备或其他通用设备开发的32位处理器,它基于ARM7TDMI核,没有内存管理单元(MMU)。在采用无MMU的微处理器的嵌入式系统中广泛采用的就是uClinux系统,作为linux的衍生系统,其具有支持多任务、内核精简、高效稳定和源代码开放的优点。系统移植的基本过程包括:获取较新版本的linux-2.6.9内核源码,根据目标平台对源码中与硬件平台相关部分进行修改,添加必要的外设驱动程序,对系统进行针对目标平台的交叉编译,生成的内核映像文件的下载调试等。 2 硬件环境介绍 硬件平台以S3C44B0为核心,采用的外部晶振频率为6MHZ,内核主频最高可达到66MHZ,平台以
[单片机]
利用<font color='red'>U-Boot</font>实现uClinux向S3C44B0的移植
为手持设备的被动式OLED显示器供电
  OLED或有机发光二极管显示器是一项带来显示器领域变革的新技术。有机材料在有电流通过时发光,基于这种原理,OLED和现在采用的LCD(液晶显示器)技术相比有许多优点。其中一个优点就是制造简单,这将导致更低的制造成本,其他的性能优点还包括更快速的响应,更宽的视角,更低的功率,更亮和更高的对比度。另一个优点就是节省了电源,使显示器的厚度达到1mm!   和LCD显示器类似,OLED也有被动阵列和主动阵列模式。被动阵列模式下,显示器象一个二极管构成的网格。每次使用外部驱动电路时,每行就点亮一个二极管。主动阵列显示器内部包含晶体管,意味着每个像素一直发光。然而,和LCD不同的是,OLED是由电流驱动的。这增加了主动阵列设计的复杂性,现
[电源管理]
为手持设备的被动式OLED显示器供电
realme新机入网:LCD屏+4880mAh电池
近日realme旗下新机悄悄登陆工信部网站,外观与部分配置已经曝光。   2022年开年没多久就有数款新机,看来新一年里realme的发布频率仍会很高。   从外观来看,这款realme新机的整体风格与刚刚发布的realme GT2 Pro十分接近,后置摄像头一模一样,连闪光灯的位置都保持一致,三颗镜头分别为64MP主摄、20MP副摄以及2MP副摄。   该手机采用了一块6.586英寸的1080*2412分辨率屏幕,屏幕材质是LCD,机身厚8.5mm,重约195g。   配置方面,手机搭载了一颗2.2GHz处理器,运行内存6GB/8GB/12GB,存储则有128GB和256GB,电池容量达到了4880mAh。   总体来说,
[手机便携]
关于STM32开发板晶振相关的问题汇总
1、自己做了个STM32的板子,,但是手里没有8M的晶振,所以就用了,12M的,,但是不正常,上电之后PA15和PA14接的是两个led,PA15接的led常亮,PA14接的的led不亮,,而且芯片下载程序又能下载,应该不是芯片坏的问题吧,,而且不管我些什么程序进去,两个脚的状态都不变,,我怀疑是电路有问题,,可是我仔细检查了电路和板子,都没问题,,JTAG正常使用。我用的是12M的晶振,这会有影响吗?感觉不管下什么程序进去感觉芯片好像没有运行。 答:如果使用12M的晶振,那么要修改启动文档中的关于RCC的语句。 因为如果你使用库文件的话,ST的库,默认外部晶振是8M,所以如果你不修改RCC部分的语句,会造成CPU不启动,
[单片机]
TFT LCD在GPS导航仪中的应用
概述 随着我国汽车工业的发展和汽车用户的增多,车辆的自主实时导航技术越来越受到人们的关注,并被广泛地应用GPS车载导航仪是通过接受卫星信号,再配合电子地图数据,来适时掌握自己的方位与目的地的一种嵌入式产品,自主导航的模式不收取任何使用费,用户可以根据自己的需要有选择地获得地图数据。 显示系统模块是GPS导航仪的重要模块,其中的TFT液晶显示器色彩更逼真,更平滑细腻,层次感更强,而且具有体积小、重量轻等优点,本设计采用samsung公司的LTV350QV-F05 TFT LCD屏。其系统框图如图1所示。 XSCAL PXA255处理器的LCD控制接口 PXA255处理器是Intel公司推出的一款基于XSC
[应用]
2416RBG接口LCD换成I80接口LCD驱动修改NK部分
在 OEMInit 里面初始化 LCD 。 1、初始化 IO volatile S3C2416_IOPORT_REG *s2450IOP = (S3C2416_IOPORT_REG *)OALPAtoVA(S3C2416_BASE_REG_PA_IOPORT, FALSE); s2450IOP- MISCCR |= (1 28); // select LCD controller for TFT lcd controller s2450IOP- GPCUDP = 0xFFFFFFFF; s2450IOP- GPCCON = 0xAAAAAAAA; s2450IOP- GPDUD
[单片机]
S3C6410移植u-boot
  1、下载uboot http://ftp.denx.de/pub/u-boot/   2、解压文件 tar xvf u-boot-latest.tar.bz2   3、进入uboot根目录、接着开始修改文件   4、创建板级文件目录 cd /borad/samsung mkdir smdk6410   5、复制smdk6400文件到创建的文件目录 cp smdk6400/* smdk6410/   6、修改目录下的文件名 cd smdk6410 mv smdk6400.c smdk6410.c mv smdk6400_nand_spl.c smdk6410_nand_spl.c   7、修改板级文件内容
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
更多往期活动

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved