蚂蚁文库
换一换
首页 蚂蚁文库 > 资源分类 > PDF文档下载
 

u-boot字符显示原理

  • 资源ID:55603740       资源大小:209.98KB        全文页数:6页
  • 资源格式: PDF        下载权限:游客/注册会员    下载费用:10积分 【人民币10元】
快捷注册下载 游客一键下载
会员登录下载
三方登录下载: 微信快捷登录 QQ登录  
下载资源需要10积分 【人民币10元】
邮箱/手机:
温馨提示:
支付成功后,系统会自动生成账号(用户名和密码都是您填写的邮箱或者手机号),方便下次登录下载和查询订单;
支付方式: 微信支付    支付宝   
验证码:   换一换

 
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,既可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰   

u-boot字符显示原理

u-bootu-boot 字符显示原理字符显示原理 在 u-boot 源码的头文件 include/video_font_data.h中定义了 ASCII 码的 8*16 像素点阵字 库,以无符号字符数组形式保存,其中的每个字符相关元素的顺序与 ASCII 码的顺序一致, 在访问每个字符的时候,可以通过字符的ASCII 值与每个字符编码所占的空间来进行偏移量 计算,从而得到相关的数据, 字库中每个字符信息都包含十六个数据, 且每个数据都是一个 八位无符号整数,展开成二进制后,他们每一位都对应了实际显示一个像素, 其中为 1 的位 代表亮,为 0 的位代表暗,这样就完成了一个字符从外形到抽象的数据的转换保存。 如字符 A 的点阵数据如下 /* 65 0 x41 A */ 0 x00, /* 00000000 */第 1 行的 8 个像素点 0 x00, /* 00000000 */ 0 x10, /* 00010000 */红色表示显示有效的像素点 0 x38, /* 00111000 */ 0 x6c, /* 01101100 */ 0 xc6, /*11000110 */ 0 xc6, /*11000110 */ 0 xfe, /*11111110 */ 0 xc6, /*11000110 */ 0 xc6, /*11000110 */ 0 xc6, /*11000110 */ 0 xc6, /*11000110 */ 0 x00, /* 00000000 */ 0 x00, /* 00000000 */ 0 x00, /* 00000000 */ 0 x00, /* 00000000 */第 16 行的 8 个像素点 A 的 ASCII 码为 65,可以通过65*16 的偏移量来访问,而实际显示时,仍然需要根 据每像素颜色位数进行映射, 并且配合前景色和背景色显示。 下面通过代码进行详细分 析。 首先,介绍几个相关数据结构。 1)用来生成前景色和背景色的参考值(include/video_fb.h) define CONSOLE_BG_COL0 x00 1 define CONSOLE_FG_COL0 xa0 2)前景色和背景色的数值表示(drivers/video/cfb_console.c) static u32 eorx, fgx, bgx; /* color pats */ 我们以 RGB565 彩色模式为例(一个像素占两个字节, 其中,低字节的前 5 位用来 表示 BLUE,低字节的后三位高字节的前三位用来表示Green,高字节的后 5 位用来表 示 RED) case GDF_16BIT_565RGB fgx CONSOLE_FG_COL 3 3 2 3 3 2 6] 4 bgx; bgx; } u32 * dest[1] SHORTSWAP32video_font_draw_table16[bits 4 u32 * dest[2] SHORTSWAP32video_font_draw_table16[bits 2 /*移动绘制的指针*/ dest0 VIDEO_FONT_WIDTH * VIDEO_PIXEL_SIZE; /*准备处理下个字符*/ s; break; 下面对如下代码进行补充说明 u32 * dest[0] SHORTSWAP32video_font_draw_table16[bits 6] u32 * dest[1] SHORTSWAP32video_font_draw_table16[bits 4 u32 * dest[2] SHORTSWAP32video_font_draw_table16[bits 2 u32 * dest[3] SHORTSWAP32video_font_draw_table16 [bits 这里首先将每行 8 位二进制数分成 4 组, 以字符 A 的第三行为例, 也就是 01111110 (表示 8 个像素点) ,分成四组 01B,11B,11B,10B。然后依次使用它们作为数组 video_font_draw_table16[]的下标查询对应颜色值,该数组定义如下 static const int video_font_draw_table16[] {0 x00000000,0 x0000ffff,0 xffff0000,0 xffffffff}; 5 此数组中保存的十六进制数以四四分组,0 x0000 对应传递进来的 0B(表示 RGB 分 量全为最小值) ,0 xffff 对应传递进来的 1B(表示 RGB 分量全为最大值) 。那么,01B 就 映射成了 0 x0000ffff,11B 映射成了 0 xffffffff,10B 映射成了 0 xffff0000。01B 对应两个像 素点,第一个像素无效(需要设置为背景色) ,第二个像素有效(需要设置成前景色) , 将该值先与 eorx 进行按位与操作 312721161150 00000000000000001111111111111111(01B) 10100101000101001010110100010100(eorx) 得到 00000000000000001010110100010100 再与背景色 bgx 做异或操作 00000000000000000000000000000000(bgx) 得到 00000000000000001010110100010100 这样便将 01B(0 x0000ffff)的有效(第二个)像素设置为前景色,无效(第一个) 像素设置为背景色。然后将像素这两个像素信息写入frambuffer中,即 u32 * dest[0] SHORTSWAP32video_font_draw_table16[bits 6] 接下来的 3 组,共 6 个像素也是同样的处理。将点阵信息写入framebuffer 也就是 写入显存中后,对应的图像就能显示出来了。 6

注意事项

本文(u-boot字符显示原理)为本站会员(sunhongz121)主动上传,蚂蚁文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知蚂蚁文库(发送邮件至2303240369@qq.com或直接QQ联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们


网站客服QQ:2303240369

copyright@ 2017-2027 mayiwenku.com 

网站版权所有  智慧蚂蚁网络

经营许可证号:ICP备2024020385号



收起
展开