- 博客(72)
- 资源 (2)
- 收藏
- 关注
原创 Zynq-7000 AP SoC的设计中,如何避免CPU0和CPU1对共享资源的访问冲突
通过这些措施,设计确保了两个CPU可以独立运行各自的操作系统和应用程序,同时通过共享资源进行必要的通信,而不会发生资源访问冲突。这种设计策略有助于提高系统的稳定性和可靠性。
2024-01-03 10:23:57 476
原创 用C语言实现将科学计数法字符串转换为数字
如果转换结束后的字符是’e’或’E’,那么说明科学计数法的指数部分存在。函数会获取指数部分的字符串,然后使用。在main函数中,首先提示用户输入一个科学计数法字符串,并读取输入。函数将字符串转换为一个double类型的数字,并记录转换结束的位置。等于输入字符串的起始位置,那么说明输入不合法,函数返回0.0。最后,函数返回原始数字乘以10的指数次幂的结果。函数将科学计数法字符串转换为数字。函数将字符串转换为数字,并输出结果。如果转换的结果是空的,即。函数将其转换为一个整数。
2023-11-28 08:42:44 762
原创 Cortex-A9 架构
在上表中,除了User(USR)用户模式以外,其它8种运行模式都是特权模式,在特权模式下,程序可以访问所有的系统资源。这几个运行模式可以通过软件进行任意切换,也可以通过中断或者异常来进行切换。大多数的应用程序运行在用户模式,该模式下某些被保护的系统资源是不能被访问的,要想访问这些受限的资源就必须进行模式切换。不过用户模式是不能直接进行切换的,用户模式下需要借助异常来完成模式切换,当要切换模式的时候,应用程序可以产生异常,在异常的处理过程中完成处理器模式切换。
2023-09-28 16:14:29 1911 1
原创 USB 接口简介
USB全称为Universal Serial Bus,翻译过来就是通用串行总线。由英特尔与众多电脑公司提出来,用于规范电脑与外部设备的连接与通讯。目前USB接口已经得到了大范围的应用,已经是电脑、手机等终端设备的必配接口,甚至取代了大量的其他接口。比如最新的智能手机均采用USB Typec取到了传统的3.5mm 耳机接口,苹果最新的MacBook只有USB Typec接口,至于其他的HDMI、网口等均可以通过USB Typec扩展坞来扩展。
2023-07-31 11:07:23 585
原创 CAN协议
CAN总线以帧的形式发送数据,但是最终到总线上的就是“0”和“1”这样的二进制数据,这里就涉及到了通信速率,也就是每秒钟发送多少位数据,前面说了 CAN2.0最高速度为1Mbps/S。图中,单元1和单元2同时开始向总线发送数据,开始部分他们的数据格式是一样的,故无法区分优先级,直到T时刻,单元1输出隐性电平,而单元 2输出显性电平,此时单元1仲裁失利,图中所有的CAN节点单元都采用CAN_H和CAN_L这两根线连接在一起,CAN_H接CAN_H、CAN_L接CAN_L,CAN总线两端要各接一个120Ω的。
2023-07-27 11:31:18 97
原创 I2S 总线接口
I2S(Inter-IC Sound)总线有时候也写作IIS,I2S是飞利浦公司提出的一种用于数字音频设备之间进行音频数据传输的总线。和I2C、SPI这些常见的通信协议一样,I2S总线用于主控制器和音频CODEC芯片之间传输音频数据。另外,有时候为了使音频CODEC芯片与主控制器之间能够更好的同步,会引入另外一个叫做MCLK的信号,也叫做主时钟或系统时钟,一般是采样率的 256倍或384倍。上图中通道0 是LRCK时钟,通道1 为BCLK,通道2 是DACDATA,通道3 是MCLK。
2023-07-19 10:39:31 856
原创 Platform虚拟总线框架与物理总线框架的理解
就会查找与之匹配的设备(通过设备树注册),如果有的话就将两者联系起来。当我们向系统注册一个驱动(包括控制器驱动和设备驱动)的时候,
2023-06-20 10:53:11 115
原创 SPI(Serial Perripheral Interface)
从上图可以看出,SPI的时序图很简单,不像I2C那样还要分为读时序和写时序,因为SPI是全双工的,所以读写时序可以一起完成。图中,CS片选信号先拉低,选中要通信的从设备,然后通过MOSI和MISO这两根数据线进行收发数据,MOSI数据线发出了0xD2这个数据给从设备,同时从设备也通过MISO线给主设备返回了0x66这个数据。SPI是Motorola公司推出的一种同步串行接口技术,是一种高速、全双工的同步通信总线,SPI时钟频率相比I2C要高很多,最高可以工作在上百MHz。
2023-06-19 18:30:55 177
原创 设备树之#address-cells、#size-cells、#interrupt-cells
属性值,一般reg属性都是和地址有关的内容,和地址相关的信息有两种:起始地址和地址长度,有了这两个属性,子节点中的"reg"属性就可以描述一块连续的地址区域了;是中断控制器中的属性,和#address-cells、#size-cells一样类似,表示此中断控制器下设备的。的设备节点中,用于描述子节点的地址信息。属性中描述中断信息的元素所用字的数量。这两个属性的值都是无符号32位整形,组合表示一个地址范围,其中。表明了子节点应该如何编写。这两个属性可以用在任何。这个字段所占用的字长。
2023-06-19 15:15:33 1378
转载 镁光(Micron)存储器根据丝印找具体型号(datasheet)的方法
的DDR3或者SPI NAND FLASH,会发现丝印不是具体型号,是FBGA Code,通过这个可以在上述网址搜到产品的完整型号!譬如上图是挂在FPGA上的DDR3,第二行是“D9PTK”芯片的确为MT41K128M16JT-125:K,正啊!其实上述询问代理镁光芯片的FAE就能获知有这么一回事。看了都有不知道什么型号的DDR芯片。的数字代表了产地等生产信息。你学到东西了吧,昂?你学到东西了吧,昂?
2023-06-12 18:14:32 1694 1
原创 platform总线框架+Input子系统驱动模板
基于设备树、platform虚拟总线架构、GPIO子系统、GPIO按键。内核版本:4.14.0。
2023-06-04 18:58:43 96
原创 Linux 之 中断使能与禁止
函数将全局中断打开了。此时才过去2+3=5秒的时间,然后全局中断就被打开了,此时A任务要关闭10S全局中断的愿望就破灭了,然后A任务就“生气了”,结果很严重,可能系统都要被A任务整崩溃。上面三个函数都是使能或者禁止某一个中断,有时候我们需要关闭。用于使能和禁止指定的中断,irq就是要禁止的中断号。关闭全局中断10S,当关闭了2S的时候B任务开始运行,B任务也调用。函数用于禁止中断,并且将中断状态保存在。关闭全局中断3S,3秒以后B任务调用。用于使能当前处理器中断系统,用于恢复中断,将中断到。
2023-05-31 21:09:05 1367
原创 Linux 之 del_timer 和 del_timer_sync
函数用于删除一个定时器,不管定时器有没有被激活,都可以使用此函数删除。:0,定时器还没被激活;1,定时器已经激活。:0,定时器还没被激活;1,定时器已经激活。
2023-05-31 20:54:52 757
转载 xilinx zynq boot 使用tfpt加载uboot+固化到flash+使用JTAG 模式 U-boot 添加python支持
已经安装vivado 启动SDK工具,打开了Ethernet控制已经有petalinux生成的Boot.bin,zynq_fsbl.elf,image.ub使用SDK烧写Boot.bin,zynq_fsbl.el在电脑端配置tftp32的server绑定IP到192.168.1.104启动板子进入ZynpMP提示符,输入以下命令:setenv serverip 192.168.1.104setenv ipaddr 192.168.1.101tftpboot 0x30000000 image.ubbo
2023-05-28 16:04:40 1152 1
原创 PL读不到PS写入DDR的数据
(按已知的信息,CPU1会不使能L2 Cache)。CPU1往DDR中写数据后用。把CPU1中的相关代码放到CPU0中运行,PL能读到DDR中的相关数据。初步分析可能与L2 Cache有关,具体原因暂不明,欢迎留言指导。函数将数据回写到DDR,但是随后PL在DDR中读不到相关数据。设置,将L2 Cache等分给两个CPU使用。CPU0的L2设置默认,CPU1设置。平台:ZYNQ7020。
2023-05-24 21:10:33 1177
转载 Ubuntu16.04版本使用图形化界面设置静态ip
我们使用的电脑一般连接路由器,默认情况下使用DHCP获取ip地址。在开发的时候,尤其是在跨平台设备之间,有时候路由器会给你重新分配ip地址,会导致例如在移植uboot时设置123的环境参数无效,造成不便。因此需要把ubuntu下的IP地址写死。
2023-05-21 20:31:03 1659
转载 ZYNQ petalinux系统启动文件固化到FLASH
petalinux-package --boot --fsbl ./images/linux/zynq_fsbl.elf --fpga --u-boot --force 生成启动文件。//等待ScureCRT传递数据;所以需要把image.ub重新命名为image.ub.bin,然后再烧录( Xilinx Tools->Program Flash)(2)将拨码开关设置为FLASH启动模式,烧录image.ub文件,因为Image file只能选择.bin或者.mcs文件,
2023-05-02 10:52:12 1508
原创 u-boot启动过程中打印BOOTP broadcast问题解决
是引导程序协议,也称为自举协议,用于系统引导过程,是DHCP的前身,BOOTP用于无盘工作站的局域网中,可以让无盘工作站从一个中心服务器上获得IP地址,即动态获取IP地址,详见。在图形交互界面的-> Subsystem AUTO Hardware Settings -> Ethernet Settings位置取消自动获取IP的选择。工具:petalinux2018.3;在petalinux工程的根目录,以。u-boot版本:2018.01。在u-boot启动过程中打印。,如下图,非常耗时间。
2023-05-01 21:27:37 1231
原创 GPIO子系统、Pinctrl子系统和Input子系统
有gpio驱动程序,那必然也有pinctrl驱动程序,pinctrl驱动程序中实现了PIN的配置方法并,并注册到pinctrl子系统,所以pinctrl驱动程序就负责实现配置PIN的底层代码(主要就是寄存器控制),并注册到内核pinctrl子系统中由pinctrl子系统进行统一管理。Linux内核针对PIN的(复用)配置推出了pinctrl子系统,对于GPIO的配置推出了gpio子系统,所以说到这里就知道了,pinctrl子系统是内核中专门用于管理、配置PIN的一套子系统。Pinctrl子系统。
2023-05-01 15:25:57 238
转载 RLC电路,帮助你轻松理解“阻抗”的概念
可以看到,RLC三者的电压幅度峰值,如果全部加起来是大于电源电压的幅度峰值10V的,之所以这样,因为RLC各自的电压在相位上有差异,在某个具体的时间点(t)上此消彼长,所以加起来不会大于电源电压的幅度峰值10V。这方面如果容易搞混,可以从源头去理解,电感的电流不能突变,先变化的是电压,呈现电感特性(XL>XC)的感性电路亦是如此;可以看到L、C上电压极性相互,相互抵消,所以L、C的组合相当于是短路的。通过前文讲解,看到在计算电路阻抗的时候,会先求出XL(感抗)与XC(容抗)之差,得到电路的X(电抗)大小。
2023-04-24 13:45:42 1826 1
原创 地址映射及IO内存访问
我们必须得到0xE000A000这个物理地址在Linux 系统里面对应的虚拟地址,这里就涉及到了物理内存和虚拟内存之间的转换,需要用到两个函数:ioremap和iounmap。对于32位的处理器来说,虚拟地址范围是2^32=4GB,例如CPU搭配的是512MB的DDR3,对于ZYNQ来说一个寄存器是 4字节(32位)的,因此映射的内存长度为4。,虚拟地址范围比物理地址范围大的问题处理器自会处理,这里我们不要去深究,因为MMU是很复杂的一个东西,后续有时间的话正点原子Linux团队会专门做MMU专题教程。
2023-04-22 15:14:04 648
原创 Linux之printk
如果使用printk的时候不显式的设置消息级别,那么printk将会采用默认级别CONFIG_MESSAGE_LOGLEVEL_DEFAULT,CONFIG_MESSAGE_LOGLEVEL_DEFAULT默认为4。的最大区别,可以通过消息级别来决定哪些消息可以显示在控制台上。默认消息级别为4,4的级别比 7 高,所示直接使用printk输出的信息是可以显示在控制台上的。控制着哪些级别的消息可以显示在控制台上,从注释可知此宏默认为7,意味着只有优先级高于7的消息才能显示在控制台上。
2023-04-21 15:26:25 304
原创 Linux设备号
注册字符设备的时候需要给设备指定一个设备号,这个设备号可以是驱动开发者静态的指定一个设备号,比如选择200这个主设备号。并不是说内核开发者已经分配掉的主设备号我们就不能用了,具体能不能用还得看我们的硬件平台运行过程中有没有使用这个主设备号,使用。这32位的数据构成了主设备号和次设备号两部分,其中高12位为主设备号,低20位为次设备号。,在注册字符设备之前先申请一个设备号,系统会自动给你一个没有被使用的设备号,这样就避免了冲突。命令即可查看当前系统中所有已经使用了的设备号。的数据类型表示设备号,
2023-04-21 10:12:37 216
原创 Linux驱动分类
一个设备可以属于多种设备驱动类型,比如USB WIFI使用USB接口,所以属于字符设备,但是其又能上网,所以也属于网络设备驱动。块设备和网络设备驱动要比字符设备驱动复杂,就是因为其复杂所以半导体厂商一般都给我们编写好了,大多数情况下都是直接可以使用的。Linux驱动主要分为三大类:字符设备驱动、块设备驱动和网络设备驱动。
2023-04-20 11:27:48 435
c primer plus第6版第7章编程练习第11题编写购物程序参考答案
2020-06-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人