自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 资源 (3)
  • 收藏
  • 关注

原创 mysql笔记

【代码】mysql笔记。

2024-03-03 17:50:36 102

原创 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 1033

原创 c++桥接模式,中介者模式应用实现状态跳转

上图为例,按上述两种方式实现的模式跳转,如果在原先的三种模式之间再增加多一种模式,就会引起每个模式都会要求改变,并且逻辑混乱,因此更改模式为桥接+中介者访问,将抽象和实现分离,实现之间采用中介者实现模式之间的通信,或者在实现中去管理每个模式之间的通信。

2023-10-09 15:23:56 447

原创 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 361

原创 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 895

原创 使用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 1585

原创 pynq-1 viaodo配置和启动uboot

以下时钟不做更改,串口会打印乱码。

2023-08-05 16:50:53 400 9

原创 通过python的signal库模拟电源设备的csine波形

【代码】通过python的signal库模拟chroma电源设别的csine波形。

2023-07-13 11:50:53 245

原创 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 736 2

原创 MLX90615驱动笔记---IIC库函数(非IIC模拟)

MLX90615芯片是一种红外温度传感器芯片,用于非接触式测量物体温度,以下总结了开发过程1:从MLX90615的芯片手册可以看到,芯片是16为adc数据,兼容Smbus和PWM协议其中温度的数据是存在于Ram中的,而相应的芯片配置,ID,模式选择,发射率等是存在芯片的EEprom中的,其中需要注意的是EEprom中尽量不要去操作的是04到0D地址之间,其芯片默认出厂地址为0x5...

2020-02-26 10:10:12 4123 3

原创 dac104s085芯片驱动讲解

dac104s085芯片驱动讲解dac104s085芯片时10位的4路dac数据输出芯片一般应用于将数字信号转换为模拟信号,通常用于波形输出驱动分析1:拿到芯片手册一般做的时浏览芯片手册,把重要信息标志:一般就是涉及到与主控芯片时有几种通信方式各种通信方式的频率,位数,校验,通信时序,通信波形等我们从手册上得知,此芯片适合spi,Qspi通信方式,频率可以最大达到40Mhz左右,...

2019-11-18 11:02:22 2570 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 5937 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 10588

原创 关于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 1871

原创 针对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 461

原创 Python的crc16直接计算方法程序

这个出crc16 的程序是根据c语言上的crc16算法改过来的,网上几乎找不到Python的crc16直接计算例程亲测可用:已经使用在项目上。因为在crc16校验中,计算出来的crc16数值是16位(uint_16)的,因为Python的整数是没有最大值的,所以计算出的16位的数值是跟c语言的不一样。但是传输数据使用8位的数据,所以需要分为两个8位的数据才可用,分出来的计算结果跟c语言计算的结果是...

2018-06-02 14:32:54 12023 2

原创 pywinusb使用

pywinusb是一个python用usb hid模式通信的模块,安装和下载方法这里不说在使用这个模块进行usb通信的时候,发送和接收数据需要注意一点:在定义的发送数据的端点使用的是0的时候,发送数据的列表的 第一个元素必须为0,因此列表的长度实际就为65,端点0 即在write函数中表象为report[0]:,如果使用的是usb的其他端点,相对应的report[0]改为其他的端点标识,usb通信...

2018-06-02 14:19:02 7581 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]&gt...

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 3629

原创 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 7190 1

原创 DAC7512驱动原理

通过阅读DAC7512的数据手册,其是16位DAC数据,12位精度采集我们可以知道如下信息:因为其最大通信频率可以达到30Mhz,因此其驱动通信协议支持DSPI和SPI,根据下图说明明驱动的时候需要向DAC写进数值,范围0-4095,其经过String 寄存器后,数值被分配到不同的路径,相应的开启通路的电阻进行分压,得出输出电压数据手册上针对如何驱动写明了,数据需要在怕片选拉低的时候送进去有效,根...

2018-04-03 10:06:22 9320

原创 Rc522 直接使用stm32串口驱动成功

本工程师自己通过网上资料和在正点原子的串口例程修改的,自己专门在网上买的串口接口驱动的rc522驱动成功 淘宝上只有51的串口直接驱动,这里我改为stm32 的点击打开链接...

2018-03-28 15:11:05 8961

原创 ucosiii在stm32f103ZEt6上的移植,自测可行

本程序是在官方源码Micrium\uC-Eval-STM32F107上移植过来的,如果需要添加中断函数,需要在中断函数的前面加上两个函数调用,主要是进中断处理和退出保存的设置:移植过来的注意事项不多,可以自行参照网上的。源码链接:https://download.csdn.net/download/lilijianqun/10276935...

2018-03-09 09:49:12 863

drvtimer.zip

开发过程中参考了gd的用户手册,特别是在时钟树那里,时钟树不同,开发过程中参考了gd的用户手册,特别是在时钟树那里,时钟树不同,亲测可用,定时准确 特别重要注意: 使用方式: static void led2_thread_entry(void* parameter) { rt_device_t hw_dev = RT_NULL; rt_err_t ret = RT_EOK; rt_uint32_t freq = 5000; //定时一秒 //rt_device_find(HWTIMER_DEV_NAME); hw_dev = rt_device_find(HWTIMER_DEV_NAME); if (hw_dev == RT_NULL) { rt_kprintf("hwtimer sample run failed! can't find %s device!\n", HWTIMER_DEV_NAME); //return RT_ERROR; } ret = rt_device_open(hw_dev, RT_DEVICE_OFLAG_RDWR); if (ret != RT_EOK) { rt_kprintf("open %s device failed!\n", HWTIMER_DEV_NAME); //return ret; } ret = rt_device_control(hw_dev, HWTIMER_CTRL_FREQ_SET, &freq;); if (ret != RT_EOK) { rt_kprintf("set frequency failed! ret is :%d\n", ret); //return ret; } for( ;; ){ rt_kprintf("flag = %d\r\n",getflag()); rt_kprintf("The key of Tamper is pressed.\r\n"); rt_pin_write(LED1_PIN, PIN_HIGH); rt_thread_mdelay(500); rt_pin_write(LED1_PIN, PIN_LOW); rt_thread_mdelay(500); } }

2019-08-16

ucosiii-stm32f103ZET6移植可行

ucosiii-stm32f103ZET6移植可行,本程序是在官方源码Micrium\uC-Eval-STM32F107上移植过来的

2018-03-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除