- 博客(32)
- 资源 (3)
- 收藏
- 关注
原创 xilinx Mailbox 中的ipi message地址计算方式
适用于openAmp mailbox ipi id对应的ipi message地址计算方式官方openamp硬件配置解析openamp官方设备树versal系列文档可以从上面得知,ipi1基地址是0xff3f0600 并通过这个地址划分了512字节大小。从上面知道每一个通道会划分每一个32字节给其他通道通信,并依顺序排序为psm,pmc,IPi0, ipi1, .....
2024-04-24 22:09:31 227
原创 c++设计模式笔记
根据中文翻译的不同,建造者模式又可以称为生成器模式。系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用(通过链表等保存生成的对象,在后续使用中,如果该对象符合使用要求,就返回给对象指针,如果不满足就生成多一个对象并放置在链表、map等)。可以定义一些独立的类来封装不同的算法,每一个类封装一个具体的算法,在这里,每一个封装算法的类我们都可以称之为策略(Strategy),为了保证这些策略的一致性,一般会用一个抽象的策略类来做算法的定义,而具体每种算法则对应于一个具体策略类。
2024-01-20 14:54:59 1031
原创 非petallinux操作的xilinx zynqmp openamp核间通信框架搭建核测试(APU :linux2021 + rpu1(裸机))
正确运行rpu后,在/sys/bus/rpmsg/devices下会产生节点,并且此时加载 modprobe rpmsg_char.ko才能在/dev下面看到rpmsg_ctrl节点此时。运行apu的echo_test可以通信。前提设备树中配置的remoteproc如果要使用rpmsg,就不能开启ipi_mailbox相关属性。如果配置了rpu的box等属性后,rpu加载启动固件会引起ipi死机,导致挂掉。Echo_test.c下载。
2023-11-10 19:16:05 1055 1
原创 c++桥接模式,中介者模式应用实现状态跳转
上图为例,按上述两种方式实现的模式跳转,如果在原先的三种模式之间再增加多一种模式,就会引起每个模式都会要求改变,并且逻辑混乱,因此更改模式为桥接+中介者访问,将抽象和实现分离,实现之间采用中介者实现模式之间的通信,或者在实现中去管理每个模式之间的通信。
2023-10-09 15:23:56 448
原创 zynqmp 设备树中断号描述在芯片中的对应
可以看到实际IPI通道的中断号在芯片中标记的是61~67,PL端到PS端的中端号是group0=121~128 对应PL端中断号0~7。查看系统注册的中断号如下:使用cat /proc/interrupts。group1=136~143 对应PL端中断号8~15。
2023-09-16 13:27:01 368
原创 zynqmp APU(linux)和RPU(裸机)通过IPI中断实现同步
APU核RPU可以通过共享内存交互数据,APU向共享内存写数据后,RPU收到ipi中断,然后读取完数据,将触发中断告知APU。从内核ipi_mailbox源码触发自己实现APU(linux)和RPU(裸机)核间同步操作。RPU ipi中断可以参考官方例子,vitis生成的例子。
2023-09-05 16:34:42 901
原创 使用ubuntu-base制作根文件系统
前期需要uboot和kernel都能识别到mmc,然后使用randisk进去系统,针对mmc做格式化和分区:使用Fdisk指令和mke2fs mmcblk0。将/usr/bin/qemu-arm-static/(64位拷贝)qemu-aachr64-static到解压的目录中的/usr/bin中。Tty需要根据板卡设置的串口进行设置,操作如下:ttyPS0是kernel和uboot,设备树中配置开启的终端输出串口。如果电脑的源已经可以使用的就不用自己添加源,需要修改的话修改一下文件。
2023-08-05 16:59:28 1602
原创 zynqmp 外接fpga linux内核驱动修改
linux-xlnx-xilinx-v2021.2/Documentation/devicetree/bindings/fpga/xilinx-slave-serial.txt,修改)slave-serial需要将fpga的m0-m2引脚配置为slave-serial模式,在内核中开启配置。使用内核自带的linux-xlnx-xilinx-v2021.2/drivers/fpga/xilinx-spi驱动,做serial slave模式,设备树更改如下(根据。//spi-cpha;开启了也会报以下错误。
2023-04-25 14:35:34 741 2
原创 MLX90615驱动笔记---IIC库函数(非IIC模拟)
MLX90615芯片是一种红外温度传感器芯片,用于非接触式测量物体温度,以下总结了开发过程1:从MLX90615的芯片手册可以看到,芯片是16为adc数据,兼容Smbus和PWM协议其中温度的数据是存在于Ram中的,而相应的芯片配置,ID,模式选择,发射率等是存在芯片的EEprom中的,其中需要注意的是EEprom中尽量不要去操作的是04到0D地址之间,其芯片默认出厂地址为0x5...
2020-02-26 10:10:12 4128 3
原创 dac104s085芯片驱动讲解
dac104s085芯片驱动讲解dac104s085芯片时10位的4路dac数据输出芯片一般应用于将数字信号转换为模拟信号,通常用于波形输出驱动分析1:拿到芯片手册一般做的时浏览芯片手册,把重要信息标志:一般就是涉及到与主控芯片时有几种通信方式各种通信方式的频率,位数,校验,通信时序,通信波形等我们从手册上得知,此芯片适合spi,Qspi通信方式,频率可以最大达到40Mhz左右,...
2019-11-18 11:02:22 2581 2
原创 rtthread中的spi驱动外设设备的挂载知识点
rtthread中的spi驱动外设设备的挂载知识点:1:再rtthread的官方4.0.0版本中,在scons工具中添加spi的设备注册,可以看到spi的驱动文件drv_spi,使用spi需要把rtthread中的drivede中的spi_core,spi_dev文件添加进去在spi_core中可以看到以下函数rt_err_t rt_spi_bus_register(stru...
2019-11-14 09:50:36 5958 7
原创 rtthread开发笔记心得
一env使用1.1:使用env构建rtthread项目:安装env_released_1.1.1,打开env命令终端可以对rtthread的项目进行配置,在env中使用menuconfig命令进行图形界面的选择配置,menuconfig除了系统自带的根目录,外设的设备添加选项由项目的kconfig配置得到,将kconfig添加想添加的外设,使用menuconfig配置后,保存,会把相应的配置更...
2019-09-01 18:23:50 10591
原创 关于rt-thread的外设驱动原理(例子spi)
一:有关SPIrt中用户需要添加spi的注册和初始化文件如:drv_spi,里面需要做的是static struct rt_spi_ops gd32_spi_ops ={configure,xfer};初始化上面的结构体的两个函数,rt的底层spi中有用到这个结构体的两个函数然后再初始化中将result = rt_spi_bus_register(&...
2019-08-09 15:13:32 1872
原创 针对python3 django使用数据库的配置
针对python3 django使用数据库的配置:1 python3不支持mysqldb,所以改为使用mysqlclientmysqlclient可以在python官网https://pypi.org/project/mysqlclient/#files或者https://www.lfd.uci.edu/~gohlke/pythonlibs/# 找到mysqlclient-1.3.13-cp36-...
2018-10-29 16:20:49 462
原创 Python的crc16直接计算方法程序
这个出crc16 的程序是根据c语言上的crc16算法改过来的,网上几乎找不到Python的crc16直接计算例程亲测可用:已经使用在项目上。因为在crc16校验中,计算出来的crc16数值是16位(uint_16)的,因为Python的整数是没有最大值的,所以计算出的16位的数值是跟c语言的不一样。但是传输数据使用8位的数据,所以需要分为两个8位的数据才可用,分出来的计算结果跟c语言计算的结果是...
2018-06-02 14:32:54 12026 2
原创 pywinusb使用
pywinusb是一个python用usb hid模式通信的模块,安装和下载方法这里不说在使用这个模块进行usb通信的时候,发送和接收数据需要注意一点:在定义的发送数据的端点使用的是0的时候,发送数据的列表的 第一个元素必须为0,因此列表的长度实际就为65,端点0 即在write函数中表象为report[0]:,如果使用的是usb的其他端点,相对应的report[0]改为其他的端点标识,usb通信...
2018-06-02 14:19:02 7594 6
原创 uboot的makefile文件分析
VERSION = 1PATCHLEVEL = 3SUBLEVEL = 4EXTRAVERSION =U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) 打印uboot版本号VERSION_FILE = $(obj)include/version_autogenerated.h 编译才能在i...
2018-05-27 14:17:41 295
原创 tmp432驱动头文件
不好意思,上篇忘记贴上头文件了,附在这里好了tmp432.c文件请看这里:https://blog.csdn.net/lilijianqun/article/details/80468875#ifndef __tmp432_H#define __tmp432_H#include "stm32f10x.h"#define I2C_SCL GPIO_Pin_6 //PB10#define I2C_...
2018-05-27 14:13:27 448
原创 tmp432远程温度传感器
根据数据手册编写初始化代码,通过模拟IIc协议驱动,源码如下:(有必要注明一点,这是自己根据手册和网上参考写的,有兴趣的可以自己买一个试一下,有问题欢迎交流),stm32驱动程序如下#include "includes.h"#include "tmp432.h"//读取输入GPIO_ReadOutputDataBit( GPIOC, GPIO_Pin_11);//void delay_us(u16...
2018-05-27 13:59:43 1151
原创 start_armboot分析
*(C) Copyright 2002-2006 *Wolfgang Denk, DENX Software Engineering, [email protected]. * *(C) Copyright 2002 *Sysgo Real-Time Solutions, GmbH <www.elinos.com> *Marius Groeger <[email protected]>...
2018-05-06 13:48:24 307
原创 stm32驱动hc595
根据网上资料: 595具体使用的步骤:第一步:目的:将要准备输入的位数据移入74HC595数据输入端上。方法:送位数据到_595。第二步:目的:将位数据逐位移入74HC595,即数据串入方法:SH产生一上升沿,将DS上的数据移入74HC595中.从高到低第三步:目的:并行输出数据。即数据并出方法:ST产生一上升沿,将由DS上已移入数据寄存器中的数据送入到输出锁存器。 源码://三引脚都接5V上啦电...
2018-05-03 11:05:03 3632
原创 mkconfig文件讲解
#!/bin/sh -e # Script to create header files and linksto configure# U-Boot for a specific board.## Parameters: Target Architecture CPU Board [VENDOR] [SOC]## (C) 2002-2006 DENX Softwa
2018-04-15 15:38:36 1119
原创 lowlevel.init函数分析
/* *Memory Setup stuff - taken from blob memsetup.S * *Copyright (C) 1999 2000 2001 Erik Mouw ([email protected]) and * Jan-Derk Bakker([email protected])
2018-04-15 15:33:22 2930
原创 dram.init讲解
int dram_init(void)//是关于ddr的初始化,在会汇编阶段已经初始化过ddr,否则也无法relocate到第二阶段//这里再次初始化是因为这里是在给gd->bd里面关于ddr配置部分的全局变量赋值,让gd->bd数据记录下来//当前的开发板的ddr的配置信息,以便在uboot中使用内存//(3):从代码上看。其实就是初始化gd->bd->bi_dra...
2018-04-14 16:18:22 1470
原创 uboot之第一阶段start.S讲解
/* *Memory Setup stuff - taken from blob memsetup.S * *Copyright (C) 1999 2000 2001 Erik Mouw ([email protected]) and * Jan-Derk Bakker([email protected]) * *Modifi...
2018-04-14 16:16:41 467
原创 stm32的几种读保护措施讲解
综合网上讲解的几种读保护措施,这里简单总结下:采用stm32唯一ID作为加密的字符,使用固定密码,采用16位字节AES加密的方式生成密文,然后写进flash,,app程序执行的时候需要判断读取的stm32唯一ID号和AES解密出来是否一致,是执行程序,否则不执行,测试过,但这个方案针对生产比较麻烦,这里不采用 ChipUniqueID[2] = *(__IO u32 *)(0X1FFFF7F0);...
2018-04-10 16:09:29 7197 1
原创 DAC7512驱动原理
通过阅读DAC7512的数据手册,其是16位DAC数据,12位精度采集我们可以知道如下信息:因为其最大通信频率可以达到30Mhz,因此其驱动通信协议支持DSPI和SPI,根据下图说明明驱动的时候需要向DAC写进数值,范围0-4095,其经过String 寄存器后,数值被分配到不同的路径,相应的开启通路的电阻进行分压,得出输出电压数据手册上针对如何驱动写明了,数据需要在怕片选拉低的时候送进去有效,根...
2018-04-03 10:06:22 9330
原创 Rc522 直接使用stm32串口驱动成功
本工程师自己通过网上资料和在正点原子的串口例程修改的,自己专门在网上买的串口接口驱动的rc522驱动成功 淘宝上只有51的串口直接驱动,这里我改为stm32 的点击打开链接...
2018-03-28 15:11:05 8969
原创 ucosiii在stm32f103ZEt6上的移植,自测可行
本程序是在官方源码Micrium\uC-Eval-STM32F107上移植过来的,如果需要添加中断函数,需要在中断函数的前面加上两个函数调用,主要是进中断处理和退出保存的设置:移植过来的注意事项不多,可以自行参照网上的。源码链接:https://download.csdn.net/download/lilijianqun/10276935...
2018-03-09 09:49:12 863
drvtimer.zip
2019-08-16
ucosiii-stm32f103ZET6移植可行
2018-03-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人