redboot mini2440 qemu 增加LCD功能

QEMU学习(四):LCD设备仿真及驱动开发 ask100fb_class_init设备类初始化实现图像更新,ask100fb_init设备实例初始化实现读写lcd驱动的值。驱动程序分配得到 FrameBuffer 后,要把它的物理地址写到上述第 1 个寄存器里。既然操作的不是真实的 LCD 控制器,那么 LCD 驱动程序可以极大精简。分别用来保存:framebuffer 的物理地址、宽度、高度、BPP。你需要记住这些寄存器的物理地址(可以自己指定地址是什么)。QEMU自带/dev/fb0,也可以自己编写驱动模块。 阅读详情

在ecos中增加lcd_support功能,和之前对emwin的移植略有不同

这次移植探究了如何从ram中留出一段空间作为framebuffer来用,

Linux, WinCE都是这样做的。

 

本贴系原创,转载请注明出处。

 

1.开始是一样的,我们需要先找模板


参考arm9下面的aaed2000,再结合我们之前的LCD Driver部分就可以了。

 

2.预留内存给Framebuffer

 

我们主要看如何预留内存,首先需要改内存配置的h文件,增加lcd的REGION,别忘记修改heap的大小

 

// eCos memory layout - Fri Oct 20 05:43:59 2000

// This is a generated file - do not edit

#ifndef __ASSEMBLER__
#include <cyg/infra/cyg_type.h>
#include <stddef.h>

#endif
#define CYGMEM_REGION_ram (0)
#define CYGMEM_REGION_ram_SIZE (0x3600000)
#define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
#define CYGMEM_REGION_lcd (0x3600000)
#define CYGMEM_REGION_lcd_SIZE (0xa0000)
#define CYGMEM_REGION_lcd_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)

#define CYGMEM_REGION_sram (0x40000000)
#define CYGMEM_REGION_sram_SIZE (0x1000)
#define CYGMEM_REGION_sram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
#ifndef __ASSEMBLER__
extern char CYG_LABEL_NAME (__heap1) [];
#endif
#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
#define CYGMEM_SECTION_heap1_SIZE (0x3600000 - (size_t) CYG_LABEL_NAME (__heap1))

 

2. 实现一个虚拟地址到物理地址转换的函数

cyg_uint32
hal_virt_to_phys_address(cyg_uint32 virt)
{
    cyg_uint32 phys = 0xFFFFFFFF;

    // Hard-wired, rather than walk the tables
    switch ((virt & 0xF0000000) >> 28) {
    case 0x0: // DRAM
        phys = 0x30000000 | virt;
        break;
    case 0x6:
    case 0x7:
    case 0x8:
    case 0x9:
    case 0xA:
    case 0xB:
    case 0xC:
    case 0xD:
    case 0xE:
    case 0xF:
        // Not mapped
        phys = 0xFFFFFFFF;
        break;
    case 0x2:
    case 0x3:
    case 0x4:
    case 0x5:
        // Mapped 1-1
        phys = virt;
        break;
    }
    return phys;

 

个人认为这样的方法,远比在代码中直接放置一个禁止优化的数组更好,首先你能统筹一下你的内存。

另外,当系统内存出错的时候你能更有遇见相性。

 

QEMU学习(二):LED设备仿真及驱动开发 qemu仿真,led设备仿真创建及驱动开发 阅读详情

相关推荐

QEMU模拟ESP32的图形性能优化与实战应用

本文深入探讨了QEMU模拟ESP32图形性能优化的关键技术,重点介绍了esp_lcd_qemu_rgb组件的应用与帧缓冲机制优化。通过LVGL库的高效集成和实战调优策略,帮助开发者在模拟环境中实现接近真实硬件的图形性能,提升嵌入式UI开发效率。

gold8的专栏 219

rk3288 基于qemu学习lcd驱动

qemu中的LCD相关的芯片手册 100ask修改了qemu的源码,实现了一个虚拟的LCD控制器,只有4个寄存器 地址 寄存器 说明 0x021C8000 fb_base_phys 用于设置Framebuffer的物理地址 0x021C8004 fb_xres 用于设置Framebuffer的X方向分辨率 0x021C8008 fb_yres 用于设置Framebuffer的Y方向分辨率 0x021C800C fb_bpp 用于设置Framebuffer中像素的位宽 使用qe

习惯就好zz的专栏 1324

QEMU实战(一):从零构建imx6ull虚拟开发板

本文详细介绍了如何使用QEMU从零构建imx6ull虚拟开发板,涵盖环境搭建、系统镜像准备、启动流程及调试技巧。通过QEMU仿真imx6ull开发板,开发者可以低成本高效地进行嵌入式开发,支持UART、GPIO等外设仿真,适用于工业控制和物联网应用。

weixin_30437847的博客 654

如何使linux的启动信息显示到LCD上面

如何使linux的启动信息显示到LCD上面   linux的启动信息刚开始只显示在超级终端上面,通过下面步骤可以将显示信息显示在LCD上面。(前提是,已经将LCD驱动程序移植到内核中去)   1、首先修改bootloader中的启动参数信息。   将bootloader代码中的nandflash.c中的void NandPart_LoadRun(int part_sel,U32

a746742897的博客 5613

从零构建:QEMU与ESP32的图形仿真开发环境全攻略

本文详细介绍了如何从零构建QEMU与ESP32的图形仿真开发环境,重点解析了esp_lcd_qemu_rgb组件的配置与优化技巧。通过工具链精准配置、QEMU图形加速优化及LVGL图形库集成,开发者无需物理设备即可实现高效图形界面开发,特别适合嵌入式系统调试与验证。

carrot的博客 260

手把手教你搞定CAC会议投稿:从LaTeX模板到PDF eXpress避坑全流程

本文详细解析CAC会议投稿全流程,重点介绍LaTeX模板调整、Turnitin查重技巧及PDF eXpress校验避坑指南。通过实战案例和代码示例,帮助研究者高效完成IEEE格式论文投稿,避免常见技术性失误,提升投稿成功率。

weixin_29969209的博客 397

qemu模拟arm嵌入式环境

文章目录一、安装qemu二、安装arm工具链三、下载编译内核四、制作根文件系统五、qemu 运行1、直接启动kernel2、通过uboot启动内核2.1 配置QEMU Tap网络2.2 安装配置tftp2.3 编译uImage2.4 编写启动脚本boot.sh3. 挂载 NFS 文件系统六、qemu 模拟机连接外网七、其他1、制作多分区镜像2、运行qemu 一、安装qemu 1、下载编译安装 # wget https://download.qemu.org/qemu-4.2.0.tar.xz # tar x

qigaohua的博客 3768

思科模拟器Cisco Packet Tracer交换机的管理配置

一、交换机的管理方式:带内管理和带外管理 通过交换机的 Console 端口管理交换机属于带外管理;这种管理方式不占用交换机的网络端口,第一次配置交换机必须利用 Console 端口进行配置。 通过 Telnet、拨号等方式属于带内管理。 二、控制台配置思科交换机 1.新建拓扑图 新建拓扑,选择console线连接交换机和PC,一端接交换机的console口,一端接PC的RS 232 口(...

qq_37992321的博客 2万+

基于QEMU的LCD驱动详解

概述:使用QEMU模型LCD屏幕,可以只写驱动程序,不需要设置LCD硬件相关,也不需要映射Framebuffer。使用QEMU可以非常方便地调试内核、查看驱动程序执行过程有助于深入研究内核及驱动Linux驱动 = 驱动框架 + 硬件操作。如果硬件操作足够简单,我们就可以把精力放在驱动程序的框架上,这才是Linux的核心。对于硬件操作,你至少要做这些事情:设置引脚用于LCD阅读LCD手册,阅读LCD控制器手册,根据LCD参数设置LCD控制器。

xace007的博客 1540

【Audio driver】深入解析mixer_paths.xml中的音频通路配置

本文深入解析了Android音频驱动开发中的核心配置文件mixer_paths.xml。文章以高通平台为例,详细阐述了音频通路(FE、BE、DSP、Device)的概念与连接逻辑,并通过实战案例拆解了扬声器与麦克风通路的配置方法、关键控件作用及调试技巧,是理解与定制Android音频系统的实用指南。

ik6789012的博客 357

YOLOv11 模型轻量化全流程:从剪枝到量化,打造移动端“极速检测利器”

将浮点模型量化为INT8模型,减少内存占用并加速推理。# 加载剪枝后的模型# 转换为TorchScript# 静态量化# 保存量化模型量化后模型推理速度可再提升20%,而mAP损失小于1%。

m0_64661770的博客 465

虚拟实验室eCos开发环境的配置 (Linux)

1.下载eMBosLab发布的eCos源代码git clone git://emboslab.git.sourceforge.net/gitroot/emboslab/rtems-4.9.5-emboslab /opt/ecos/ecos-hg" /opt/ecos/ecos-hg" 表示你需要放置的目录,请自行设置2.下载eCos最新ARM编译器点击 arm-eabi 得到 arm eabi的编译器,解压到 /opt/ecos/gnutools/arm-eabi/“/opt/ecos/gnutool

嵌入式虚拟系统实验室 7543

Java接入DeepSeek大模型:从零实现流式对话+多轮会话管理(完整项目实战)

emitter.completeWithError(new RuntimeException("连接DeepSeek服务超时"));private static final Set<String> BLACK_WORDS = Set.of("暴力", "色情", "政治敏感");emitter.onCompletion(() -> log.info("SSE连接完成"));emitter.onTimeout(() -> log.warn("SSE连接超时"));// 每个路由基础连接数。

wjianwei666的专栏 927

Linux系统驱动之上机实验_基于QEMU

上机实验_基于QEMU 前提:安装了VMware,运行百问网提供的Ubuntu 18.04 本节视频对应源码在GIT仓库中,位置如下(这2个文件是完全一样的): doc_and_source_for_drivers\STM32MP157\source\A7\03_LCD\03_lcd_drv_qemu_ok\lcd_drv.c 或: doc_and_source_for_drivers\IMX6ULL\source\03_LCD\03_lcd_drv_qemu_ok\lcd_drv.c 1. 下载、安装、

韦东山嵌入式专栏 1465

“华为杯”研究生数学建模竞赛2017年-【华为杯】B题:面向下一代光通信的 VCSEL 激光器仿真模型

得出以下主要结论:在相同的偏置电流条件下,随着温度的升高,带宽的峰值向。在相同的温度下,随着电流的增大,带宽的峰值越小且曲线由波峰形状。方案,包括可能的数学公式,不同温度和偏置电流下的带宽响应曲线,并与问题。线,得出以下主要结论:在相同的偏置电流条件下,随着温度的升高,带宽的峰。在相同的温度下,随着电流的增大,带宽的峰值越小且曲线由波峰形状逐渐变得。得的激光器特性曲线和模型中仿真得到的特性曲线,之后,可以将两组曲线的差。说明的是,由于数值优化算法的成功与否很大程度上依赖于初始参数的猜测,参。

getusushu的博客 97

HDOCK 蛋白蛋白对接软件使用;LZerD、pyDock、ClusPro网页在线对接

参考:hdock支持蛋白与蛋白,也支持蛋白与核酸对接计算。

weixin_42357472的博客 1万+

qemu虚拟机的使用(三)——ubuntu20.4配置/编译x86/64平台的buildroot根文件系统并加载系统

本文基于buildroot搭建x86-x64的qemu的根文件系统,并使用qemu进行内核加载和根文件系统挂载,本文实测可以启动并使用。

q544344318的博客 2294

机器人学(三):手眼标定

主要讲了eye-to-hand的手眼标定求解算法,包括AX=XB和AX=YB两种情况,包含SVD法、Tsai-Lenz法、最小二乘法等,从原理到解法再到算法代码实现,包括matlab代码、C++代码、库的使用等,简单明了,容易在实际项目中进行应用

行者无疆的博客 2554

QEMU MINI2440 如何设置显示分辨率?

QEMU MINI2440 如何设置显示分辨率?

qq_34503002的博客 651

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

01 QEMU仿真器-模拟器介绍

如果你也像我一样,虽然学过电子和硬件,也做过boot、系统移植、驱动和应用,但是并不喜欢随身带个板子;验证代码功能时为了节省调试时间,喜欢先用gcc写个纯逻辑的代码工程在PC上先测试一遍,调通逻辑后才上交叉编译工具或者在Keil中用硬件仿真器下到板子里运行。那么此时QEMU硬件模拟器是一个不错的选择,很多开发板都有QEMU版本的模拟器,可以直接把开发板的二进制执行文件通过QEMU来运行,有常用的外设和LCD液晶屏模块,普通功能可以直接运行,但是并不能仿真所有硬件驱动,特别是一些特殊的不通用的驱动。

qq582880551的博客 1904

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

qemu模拟仿真esp32开发板并启动esp_lcd_qemu_rgb图形支持

图形仿真espressif/esp_lcd_qemu_rgb :espressif/esp_lcd_qemu_rgb • v1.0.2 • ESP Component Registry 首先安装qemu仿真esp32开发板,具体参考: qemu模拟仿真esp32开发板参考:为了在qemu中模拟esp32,在windows中安装qemu esp32c3 riscv32模拟环境-优快云博客 下载图形仿真例子代码:https://components.espressif.com/api/downloads/?

skywalk8163的专栏 3584

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

再续【从零使用qemu模拟器搭建arm运行环境】

动机 我在2015年编写博文《从零使用qemu模拟器搭建arm运行环境》介绍在 Ubuntu 14.04系统如何一步步构造arm+qemu的运行环境。该文的主要问题是读者有运行环境不一定是Ubuntu 14.04,会遇到不少的软件包安装和编译错误问题,我也没有办法构造复现。另一方面,当前再次构造这个环境时,也会遇到类似的问题需要处理,特别是换成Centos发行版之后,处理起来更复杂。 既然每位朋友的发行版都不一样,那可以使用Docker统一构建环境,这是本项目的主要动机,使用Docker基于Ubuntu14

海枫的专栏 4050

QEMU模拟mini2440开发环境

如何使用QEMU模拟**FriendlyArm的Mini2440开发板**。 主要是为LInux初学者不必购买ARM9开发板,同样也可以学习ARM9, LInux驱动与内核相关的东西。帮助初学者快速上手ARM与Linux。

zhuwade的博客 2921

GUI 在 MINI2440 QEMU 的ecos 上的移植

经历了redboot, kernel测试,网卡驱动,web server的测试,很自然的我们想到了UI。(本帖系原创,转载请注明出处)这不仅仅是移植一个GUI, 更重要的让MINI2440 QEMU的ecos仿真平台更加完整话。对emwin的移植,需要两个部分,老生常谈了网上到处都是。(本移植也只是针对学习和测试,并非商业用途)1. LCD的驱动这个请网上搜索,MINI2440 LCD Driver就可以。2. GUI的OS接口探究emwin的OS接口部分,我们需要利用ecos的两个同步资源cyg_sema

嵌入式虚拟系统实验室 2823

MTK平台一个花屏重启问题的分析

在正常使用过程中,出现了异常重启,当时在聊QQ之后退出到桌面,然后就重启了。另外插着USB充电,根据FAQ [FAQ14812]如何快速对系统重启问题进行归类 提供以下信息,附件有完整的 ZZ_INTERNAL  信息是 Hardware Reboot,0,0,99,/data/core/,0,,HW_REBOOT,Mon Sep  7 09:17:02 CST 2015,1

wed110的专栏 5212

Android系统的开机画面显示过程分析(4)

        函数fb_show_logo_line也是实现在文件kernel/goldfish/drivers/video/fbmem.c中,如下所示: static int fb_show_logo_line(struct fb_info *info, int rotate,                                const struct ...

weixin_33672109的博客 186
上一篇: 虚拟嵌入式系统实验室
下一篇: MINI2440 DM9000网卡驱动在 QEMU上的移植(转)
知秋一叶
博客等级 码龄19年 196粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值