首页
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)其他类似,不过有一点,在菜单中母菜单可以直接用快捷方式打开,但对应母菜单中的子项必须在母菜单是打开状态
热门专题
bootspring 表单添加数据库
debian 搭建PPPoe
jquery计算时间差
C# Series鼠标交叉点标记
crc32字节法实现
Pluploader上传文件类型设置
统计班上男生数量sql
硬件系列vmx-14不受支持
P1135 奇怪的电梯java
jmeter http默认值
双调排序并行任务依赖
matplotlib 清空数据
java File 获取视频时长
ResponseUtil.buildSuccess方法
springboot restTemplate上传bytes
zookeeper心跳作用
雷达图echarts为什么没有显示
自答应文件 windows10
openpyxl无法支持pyinstaller
linux查看javac.exe