首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
qemu7 增加外设
2024-11-04
[虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(一)
目的: 结合现在比较流行的技术,通过一个demo 展示一个全栈式设计的各种技能. 一个全栈式的工程师,应该能设计通过verilog/VHDL做logical设计.能写内核驱动,能架站. 要熟悉verilog/VHDL, C/C++, shell, python, JS, HTML, CSS等语言. 发现自己很多细节还需要了解. 首先理解2个概念 qemu是什么 简单的说,qemu 是一个开源软件,可以模拟整个计算机系统, 包括多种CPU和各种外设. 我们可以形象的比喻 qemu就是一个虚拟的攒机
Linux 路线 推荐
1.<Linux程序设计>- 靠它来入门,然后装一个linux体系,练习shell(party)和linuxC,把基础打牢: 2. <深入理解Linux内核>和<Linux内核设计与告竣>:后者我已经粗粗看过一遍,值得细看,前者必需尽快看完: 3. <Linux设备驱动设计>:必买必看,适用性强: 4.<Advsome kind ofced Progri aming in Unix Envirement>:这本书貌似翻译不给力,我有高清英文电子版
电脑网线/水晶头的连接方法(A类,B类)
一般的橙白,橙,绿白,蓝,蓝白,绿,棕白,棕. 若是只有四根线的,则任选四根,做线时对应水晶头的1\2\3\6四个入口压制即可. 如果只有一根网线,但想两台机子同时上网,不增加外设,做网线时45水晶头连接方法 水晶头金属面对自己,从左到右为1-8 (白橙.橙,白绿.蓝,白蓝.绿,白棕.棕) 网 线 的 接 法 一.PC连HUB (电脑连接上网设备) A端:(标准568B):白橙,橙,白绿,蓝,白蓝,绿,白棕,棕. B端:(标准568B):白橙,橙,白绿,蓝,白蓝,绿,白棕,棕. 二.PC连PC
linux学习之——学习路线(摘抄)
摘抄某笔者的Linux练习的道路图(rolistingmap): 对比一下为什么要学习linux 了解Linux的基础常识,这些包括了用户管理.群组的概念.权限的观念等 掌握至多50个以上的常用命令 掌握.tgz..rpm等软件包的常用安设方法 练习增加外设,安设设备驱动程序(比如网卡) 熟识熟练Linux文件体系 和目录结构 掌握vi!gcc!gdb等常用编辑器,编译器,调试器 理解shell别名.管道.I/O重定向.输入和输入以及shell脚本编程 网络的基础包括: 掌握路由概念.OSI七层
zedboard学习第一篇
1. 刚开始学习使用,不知道从哪里开始,手上的资料也很乱,至于这个板子需要学什么也不清楚. 2. 第一个工程就从helloworld开始吧,Zed板上的Zynq是一个PS(processing system, 双核A9 + 存储管理 + 外设)+ PL(programable Logic) 结构,如果不使用PL,zynq的开发和普通的ARM 芯片开发一样.不同的是PS单元是可配置,因而硬件信息是不固定的.这也是zynq灵活性的一个表现. 原来如此. 3. PlanAhead 14.1 + XPS
Vivado的helloword程序:硬件工程部分
硬件平台:ZedBoard软件平台:vivado2013.3 本示例通过综合.实现,生成比特流,发送到SDK实现.启动vivado并且创建一个项目根据提示操作一步步创建新项目的时候记得选择RTL Project 板子选择ZedBoard,其他默认. 创建一个IP综合设计在IP Integrator中选择Create Block Design 在Create Block Design弹出页,为IP子系统设计定义个名字 在IP子系统中,在中间的Diagram中选择Add IP 在搜索页,输入zynq
[虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(七)
目标: 1. 完成最终的设备驱动,增加具体的watchdog设备操作的代码. 测试代码: 代码最终实现见cwd_demo.c 代码只实现了read与write. 没有实现ioctl. 因此,我们可以通过shell指令直接操作我们的watchdog. read函数,只读取watchdog的0x01 和0x02寄存器. write函数无论写入多少个字节,驱动实际只写第一个字节. 1. 编译 $ make 2. 装载驱动 $ sudo insmod cwd_demo.ko 3.查看设
[虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(六)
目的: 1. 为我们自己的watchdog写一个驱动 步骤: 通过之前的介绍,我们很容易猜想到写我们基于PCI的watchdog驱动,可以分2个步骤. 1. 探测加载PCI设备 这部分代码跟我们的设备本身没有任何关系. 我们通过这部分代码,找到 厂商ID为 0x1af4, 设备ID为0x0101的设备.这个设备是我们用qemu中定义我们的watchdog中指定的. #define PCI_VENDOR_ID_REDHAT 0x1af4#define PCI_DEVICE_ID_CWD 0x010
[虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(五)
目的: 1. 了解PCI的基本知识,为完成watchdog的设备做准备. 准备知识: 简单的说,PCI 设备分3个空间. 配置空间,IO空间,内存地址空间. PCI设备厂家决定了外设是使用IO空间还是IO内存空间. 我们通过读取配置空间的bar寄存器的最低位bit0来决定是该设备使用的是IO空间还是内存地址空间. 计算机一启动,bois或者linux会根据域,总线号.设备号和功能号,按照一定的算法,扫描PCI设备,读取设备配置空间的信息.最主要的包括厂商ID,设备ID和bar寄存器中设备的外设地
[虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(四)
通过前面的操作,我们已经可以创建一个带有我们自己的PCI的watchdog外设qemu 虚拟机了. 目的: 1. 了解我们的外设情况. 2. 为在guest中开发我们自己的linux PCI驱动程序做准备. 查看我们的watchdog设备 考虑到ubuntu对于 spice的支持不好.我们采用VNC显示. -vnc 127.0.0.1:21 -vga cirrus -chardev stdio,id=mon0 -mon chardev=mon0,mode=readline 启动qemu $ su
[虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(二)
这篇文章的理解,需要一些专业知识了. 我们可以创建模拟自己的外设吗? 我们已经知道什么是qemu了,我们可以通过qmeu的提供的外设,DIY一个计算机了. 但是我们可能还不满足,我们可以自己制造一个外设吗? 答案是可以的.而且这是了解计算机体系结构的一个很好的实践活动. watchdog 外设 watchdog, 即看门狗. 如果狗饿了,便会”咬人“(CPU),让CPU重新启动. 为了不让狗狗”咬人“,我们需要不停的喂他. 我们将创建一个最简单的PCI的外设watchdog.如果你是一个硬件工程
[虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(九)
目的 1. 使用verilog/vhdl设计一个PCI的watchdog设备. 2. 通过systemverilog 写testbench. 很久之前研究过AC97的verilog代码.但是很久没用verilog/vhdl的写代码,估计需要很长时间恢复功力啊. 最近还需要复习操作系统的一些基本的概念,需要背书,还需看很多算法的书.这些东西得时刻准备着.很多公司的面试,很看中这些. verilog/vhdl的demo有时间再实现.
[虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(八)
目的: 1. 通过网页读取watchdog的信息 2. 通过网页设置watchdog 准备工作: 1. 选择一个web框架,选用 cherrypy $ sudo apt-get install python-cherrypy3 2. 熟悉 RESTFUL , 参考 RESR_API(Mark McLoughlin) redhat REST API 指导 步骤: 我们选择了一个cherrypy作为web框架. cherrypy的部署简单. 这只是个demo,没有实现MVC,大家自己练习. 此外也
[虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(三)
我们已经设计了一个基于qemu的watchdog了.下一步工作就是创建一个含有我们的watchdog的虚拟计算机器了. 准备工作: 1. 使用virt-manager或者virsh创建一个虚拟机器. 2. 并安装一个操作系统.我选择了ubuntu12.04 3. 保存这个虚拟机的镜像. 为虚拟机器创建一个网络 比较流行的网络可以是bridge网络,macvtap网络,和NAT网络.当然还有一些高级的,open-vswitch等等. 为了将问题简单化,我们将利用libvirt的default ne
给NIOS II CPU增加看门狗定时器并使用
给NIOS II CPU增加看门狗定时器并使用 配置看门狗定时器: 设置计时溢出时间为1秒 计数器位宽为32位 勾选No Start/Stop control bits 勾选Fixed period 不勾选Readable snapshot 勾选System reset on timeout.(Watchdog) 不勾选Timeout Pulse (1 clock wide) 这部分配置可以参见"Embedded Peripheral IP User Guide.pdf"中Inte
STM32学习笔记(四) RCC外设的学习和理解
RCC时钟模块并不好理解,初次接触我也是一头雾水,而且我真正掌握它的时候也比较晚,是我在学习uC/os-II,需要分析时钟时才有了深刻认识.但在学习中我却一定要把放在了前列,因为这是整个嵌入式最重要的基础之一,可以说是M3芯片的心脏.初学者理解是比较困难,但是掌握清晰对于嵌入式操作系统特别是Timer定时器以及通讯领域具有重大意义.下面进入正题,先上一章RCC模块的结构图: 初看此图是不是感觉太复杂了,事实上我第一次看这张图的时候也是的,完全理不清结构,不过不用担心,下面我就分层带你来理解这幅图
TMS320C54x系列DSP的CPU与外设——第3章 存储器
第3章 存储器 本章介绍了TMS320C54x DSP存储器的构成和操作.一般来说,C54x器件共有192K 16位字的存储窨,这个空间分成3个专用的部分:64K字程序.64K字数据和64K字I/O口.在某些C54x器件中,存储器结构已经通过重叠和分页的方法加以改变,这样就增加了存储器空间的容量. C54x体系结构上的并行特点和片内RAM的双存取能力使C54x可以在任意给定的机器周期内同时进行4个存储器操作:一条指令的读取操作.两个操作数读操作以及一个操作数写操作. 在片内存储器中操作有如下几
TMS320C54x系列DSP的CPU与外设——第2章 TMS320C54x DSP体系结构总体介绍
第2章 TMS320C54x DSP体系结构总体介绍 本章介绍TMS320C54x DSP体系结构的概况,包括中央处理单元(CPU).存在器和片内外设. C54x DSP采用了高级的改进哈佛结构,用8条总线达到最大的处理能力.其独立的程序和数据空间允许同时对程序指令和数据进行访问,提供了高度的并行性.例如,在单周期内可以完成3个读操作和1个写操作,并行存储指令和专用指令充分利用了这种结构.另外,数据可以在数据空间和程序空间之间传送.这种并行支持一套功能强大的在单机器周期内完成的算术.逻辑和位操作
Keil C51总线外设操作问题的深入分析
阅读了<单片机与嵌入式系统应用>2005年第10期杂志<经验交流>栏目的一篇文章<Keil C51对同一端口的连续读取方法>(原文)后,笔者认为该文并未就此问题进行深入准确的分析,文章中提到的两种解决方法并不直接和简单.笔者认为这并非是Keil C51中不能处理对一个端口进行连续读写的问题,而是对Kei1 C51的使用不够熟悉和设计不够细致的问题,因此特撰写本文. 本文中对原文提到的问题,提出了三种不同于原文的解决方法.每种方法都比原文中提到的方法更直接和简单,设计也更
VC编程 快捷键增加的几种方式
VB运行时菜单字母的下划线消失 vc 给菜单增加快捷键RT给Menu里面的 文件 帮助 查看 等功能键加上一个快捷方式.比如按Ctrl+F1 就弹出查看下面的子功能.------解决方案--------------------------------------------------------...这个是VC的自带功能.在菜单名称后+ (&S)S是你想设置的快捷方式,对应按键是(ALT+S)其他类似,不过有一点,在菜单中母菜单可以直接用快捷方式打开,但对应母菜单中的子项必须在母菜单是打开状态
热门专题
如何查看程序连接了哪个ip地址的sqlserver
单页应用如何缓存列表
共享文件夹里只显示部分文件
设置mapreduce的优先级
mybatis 调用存储过程返回游标
java计算100天后的日期
video.js中文文档
turtle生日贺卡
java文件流相对路径找不到绝对文件能找到
同一领域中文python分词比较
spring mvc访问地址什么为结尾
多线程 阻塞 可运行
idean新建gradle module怎么没有目录结构
html2Canvas 滚动截图
websocket 协议
input输入框只能非负整数
安卓手机长按文字弹出选项怎么关闭
c代码 root权限
request设置请求时间python
区块链 创世区块 json各项信息是什么