- 博客(24)
- 资源 (17)
- 收藏
- 关注
原创 linux内核中断机制及中断驱动
1, 计算机为什么有中断机制? 由于外设的处理速度远远慢于CPU的处理速度 为了保证CPU和外设的数据通信正确,一般呢首先可能考虑使用轮询机制(轮询就是死等),如果轮询的时间过程长,会大大降低CPU的利用率(CPU不能干其他的事情,只能等待当前这个硬件)此时还可以考虑使用中断机制,当CPU发现设备没有准备就绪, CPU干其他的事情(比如做一个算法)一旦外设准备好了,外设会给CPU发...
2020-03-28 19:58:47 1295
原创 线扫激光算法原理
一:线扫激光算法原理激光器发出的激光束经准直聚焦后垂直入射到物体表面上,表面的散射光由接收透镜成像于探测器的阵列上。光敏面于接收透镜的光轴垂直。如图:当被测物体表面移动x,反应到光敏面上像点位移为x’。a为接收透镜到物体的距离(物距),b为接收后主面到成像面中心的距离(一般取焦距f),θ为激光束光轴与接收透镜之间的夹角。D为激光光束轴到透镜中心的距离。接收透镜的焦距为f,其余的参数如下图:...
2020-03-12 00:17:07 14842 9
原创 ZYNQ petalinux系统启动文件固化到FLASH
首先明确:petalinux启动文件从FLASH启动系统,也就是将启动文件放入FLASH中。1,vivado配置:2,导入硬件后配置petalinux source /opt/Xilinx/Vivado/2017.4/settings64.sh source /opt/pkg/petalinux/settings.sh petalinux-create --type...
2020-03-10 23:54:53 7799 4
原创 ZYNQ使用AXI_Ethernet编译系统扩展多网口
1,使用内核版本4.9:linux-xlnx-xilinx-v2017.4(1)petalinux-create --type project --template zynq --name lwip 进入lwip文件夹执行:petalinux-config --get-hw-description your_wapper.hdf ,导入硬件。...
2020-03-10 00:33:18 11174 5
原创 linux内核字符设备驱动开发
前言:1, 设备驱动定义和内容 (1)一个驱动一定要操作硬件;(2)驱动将操作硬件过程进行封装,给应用程序访问; 一切(用户要向访问的一切硬件)皆文件(本质就是在访问对应的文件) 字符设备文件的访问必须利用系统调用函数明确:应用程序访问设备文件本质就是在访问硬件 以第一个UART为例: int fd = ...
2020-03-28 21:21:13 772
原创 嵌入式系统启动文件及其流程的理解
(3)内核启动以后,运行到最后,根据bootloader传递过来的参数,内核根据此参数,去到 “某个地方”找根文件系统rootfs,找到以后,执行根文件系统rootfs中的第一号进程init,最后init第一号进程创建一个子进程来运行sh程序(shell),接收和处理用户输入的命令,例如ls,cd,mkdir等,至此linux系统运行完毕!说明:将内核从Nand的5M开始,读5M到内存的 0x50008000地址,然后再利用bootm命令从内存的0x50008000启动内核,内核就开始玩命的运行了。
2020-03-27 23:56:31 1840 1
原创 一维距离像时域合成算法
合成一维距离像数据之前,需要对下变频DDC后的进行数据截取:截取之前输入数据为(1)输入DDC处理后和通道的IQ数据N点(2)指示系统提供的目标距离(3)距离波门大小(4)当前工作波形脉冲宽度一维距离相合成的的输入内容包括:(1)截取后和通道的IQ数据M点(2)DDC处理后子脉冲数据率(3)工作载频(4)子脉冲的脉宽,带宽及数量(5)子脉冲的脉冲重复频率(6)波束中心相对于地面的速度(7)波门大小(8)距离波门的起始时刻
2020-03-27 15:51:03 2782
原创 zedboard低版本编译生成linaro系统启动文件
3、修改include/configs/zynq-common.h文件,把sdboot参数修改成如下,即删除了读取ramdisk的操作,并把bootm的第二个参数修改成“-”,表示无ramdisk。下载u-boot源代码 ,官网是https://github.com/Xilinx/u-boot-xlnx.git,直接通过git下载,或者下载zip压缩包。下载系统的链接:https://releases.linaro.org/archive/12.09/ubuntu/leb-panda/
2020-03-26 15:49:01 631
原创 QT 4.8.6安装和交叉编译
一,QT4.8.6安装ARM版本这个是qt目录,ARM的1,替换qmake.confg./configure-embeddedarm-xplatformqws/linux-arm-gnueabi-g++-little-endian-opensource-host-little-endian-confirm-license-nomakedemos-nomakeex...
2020-03-26 15:32:10 3929
原创 ZYNQ 使用AMP实现双核裸机并重启CPU1复位
这个函数的第三个参数是CPU号,但要注意CPU号不是简单的0、1、2等,而是每一位指代一个CPU号,可以参考UG585寄存器表mpcore中ICDIPTR的解释,0bxxxxxxx1指向CPU0,0bxxxxxx1x指向CPU1,因此本程序中设置CPU1号的值为 0x2。在程序中,需要CPU0唤醒CPU1,可以在UG585文档看到相关解释,第一步是向0xffffffff0地址写入CPU1的访问内存基地址,在本实验中也就是0x20000000,第二步是通过SEV指令唤醒 CPU1 并且跳转到相应的程序。
2020-03-26 01:45:27 4330 1
原创 ZYNQ PS PETALINUX程序开机自己启动配置
2,建立shell脚本文件的app工程:petalinux-create -t apps --template install -n startup --enable。进入 test_autostart/project-spec/meta-user/recipes-apps/startup中修改startup.bb文件。进入test_autostart/project-spec/meta-user/recipes-apps/startup中修改startup.bb文件。
2020-03-25 01:32:11 3796 1
原创 ZYNQ 免IIC驱动读写MCP4661T继电器
读写地址是不一样的,寄存器地址后四位是写0x00读0x0C,严格来说应该是后3位,最后一位是数据位的最高位,这个无关紧要,一般不适用最高。数字电位器 50k 欧姆 2 电路 257 抽头 I²C 接口 16-QFN,MCP4661T-503E/ML。零件编号:MCP4661T-503E/MLTR-ND - 卷带(TR)MCP4661T-503E/MLCT-ND - 剪切带(CT)电阻 - 触点 (欧姆)(典型值):75。供应商器件封装:16-QFN(4x4)工作温度:-40°C ~ 125°C。
2020-03-23 00:20:30 4964 1
原创 使用TFTP和NFS windows和arm之间传文件
先连网线上最近主控程序的那张主控板,确认能从电脑ping通主控;然后在电脑某个盘新建tftp文件夹,这里C盘为例,把归档库、配置文件、主控及测试程序、拷进tftp文件夹根目录(注意不能有文件夹存在),打开tftp工具,分别点击Tftp→Configure(配置)→Browse tftp -g 192.168.1.12 -r 123.txt 具体操作:在开发板输入下面命令传文件到电脑tftp -p 192.168.1.10 -l 245.txt请将 PC 下的防火墙关闭或将
2020-03-22 15:31:32 1736
原创 ZYNQ 裸机和petalinux扩展CAN接口
CAN总线使用两根线来连接各个单元:CAN_H和CAN_L,CAN 控制器通过判断这两根线上的电位差来得到总线电平,CAN 总线电平分为显性电平和隐性电平两种。Frame[2]是8字节数据的前四个,frame[3]是8字节数据的后四个,如果长度不足8的不用管后面的数据,不用填0进去;标准格式和扩展格式的主要区别是仲裁段中帧ID的长度,标准帧的帧ID长度是11位,扩展帧的帧ID长度是29位。Frame[0]对应仲裁段,frame[1]对应控制段,frame[2]和frame[3]对应数据段。
2020-03-20 00:21:52 5151 1
原创 ZYNQ配置IIC接口读取eeprom和iictool使用
1,对于pl_iic_original.v,读写地址WRITE_READ_ADDR,写数据WRITE_DATA是在程序中固定的读开始,写开始,这两个信号是从按键PL_KEY1,PL_KEY2获得,读数据直接以PL端LED来显示。其中slv_reg0,slv_reg1,slv_reg2,slv_reg3分别在SDK软件中设置读写地址,写数据,写开始,读开始信号,这些数据设置好之后送往 AXI 总线。pl_iic_original.v,iic.v是当前要打包成AXI4 IP的新文件。
2020-03-19 21:25:11 3654 3
原创 将本地文件通过终端上传到linux阿里云服务器
进程间通信方式(1)文件(2)信号(3)管道(4)共享内存(5)消息队列(6)信号量集(7)网络(重点)使用信号量集实现进程间的通信1 ,基本概念(1)什么是信号量?信号量本质就是一种计数器,用于控制同时访问同一个共享资源的进程个数/线程个数(2)什么是信号量集?信号量集本质就是信号量的集合,也就是由若干个信号量组成的集合,主要用于控制多种共享资源各自同时被访问的进程/线程个...
2020-03-19 00:14:54 1600
原创 嵌入式linux进程间通信七种方法
通信方式(1)文件 (2)信号(3)管道(4)共享内存(5)消息队列(6)信号量集(7)网络其中(4)(5)(6)统称为 XSI IPC通信方式一,文件的管理文件的基本操作:C语言中文件操作函数有:fopen()/fclose()/fread()/fwrite()/fseek()unix中文件操作函数有:open()/close()/read()/write()/...
2020-03-18 23:44:40 1004
原创 滤波器本质和举例
一种去掉偶尔产生不规则极端数值点的滤波方法。滤波器实质上就是选频,所以首先要在频域角度理解,但在日常使用中我们无法直接在频域进行操作,只能在时域操作。伟大的傅里叶告诉我们时域频域是有某种关联的,也就是傅里叶变换。通俗一点就是我们要在时域进行操作,而这种操作对应频域就是一个曲线,通过与信号频域相乘既可选频,选频部分的曲线值大,其他部分值小。这也就是著名的卷积。而卷积正是滤波器核心。数字滤波器的本质就是通过计算来模拟滤波器的时频特性,以达到你想要的信号效果,比如去除噪声等。
2020-03-18 23:16:45 1852
原创 复旦微开发过程中遇到的问题总结(一)
启动时候qspi不可以串行io访问,如果可以的话,那就bin就可以超过16MB。但是先下载PL把JLINK打通然后用JLINK下载到QSPI程序,第一次没问题(在这次之前都可以正常烧录),但是JLINK把这个下载完后,再次烧录的时候,发现JLINK灯红绿闪烁并下载失败无法连接。十三,7045程序跑起来以后,有什么办法通过串口给ps发指令,然后通过pl jtag在线加载bit,加载完成后通知ps继续运行,ps程序裸跑,不重新加载,也就是能随时在线跟新PL bit程序运行而又不影响PS程序造成死机?
2020-03-18 22:54:42 11250
原创 脉冲式激光测距机原理
激光测距设计:大致流程:1,基本原理和关键:激光脉冲测距与雷达测距在原理上是完全相同的。在测距点激光发射机向被测目标发射激光脉冲,光脉冲穿过大气到达目标,其中一小部分激光经目标反射后返回测距点,并被测距机上的探测系统接收。测出从激光发射时刻到反射光被接收时刻之间的时间间隔t,根据已知光速,公式:S=Ct/2(S距离;C激光空气中速度;t发射和接收回波的时间差。脉冲式激光测距技术、干涉法激光测距技术、反馈法激光测距、三角法激光测距技术、相位式激光测距技术。最常用的是脉冲激光测距方案和关键...
2020-03-12 00:41:59 17504 2
原创 嵌入式线激光测距传感器
一:分步说明:摄像头的标定(Small Camera Calibration)1: 准备标定图片标定图片需要使用标定板在不同位置,不同角度,不同姿态下拍摄,最少需要3张,以10—20张最好。标定板需要是黑白相间的矩形构成的棋盘格图,制作精度要求要高。标定采用的是22*22大小1mm/格误差在1um内的棋盘格。2 :对每一张图片提取角点信息需要使用findChessboardCo...
2020-03-12 00:09:48 1949 7
原创 ZYNQ axi_uartlitle IP核扩展232或者422
嵌入式Linux系统中,串口被看成终端设备(tty),包括3个结构体:uart_driver/uart_port/uart_ops定义在文件 include/serial_core.h中,实现一个uart驱动程序要实现返3个结构体即可。因为串口fifo只有16字节,所以,发送函数先关中断,接着将数据写入fifo中,最后开中断,发送完毕会触发中断,中断函数根据NumBytes、fifo状态和已发送字节数,继续关中断,发送数据,开中断,触发中断,如此循环,直到所有数据都发送完。1,生成 Bit 文件。
2020-03-11 00:48:35 4858 1
原创 ZYNQ在linux通过AXI_GPIO操作灯
在project-spec/meta-user/recipes-bsp/device-tree/files/pl.dtsi。|gpiochip*|该目录下保存系统中GPIO寄存器信息:每个寄存器控制引脚的起始编号base,寄存器名称,引脚总数||edge|设置GPIO口输入时触发方式:“none”, “rising”, “falling”, or “both”||value|GPIO为输出时可设置GPIO口电平,"0"为低电平;|direction|配置GPIO口输方面,"in"为输入;
2020-03-10 00:57:21 6194 1
原创 ZYNQ petalinux将系统启动文件固化到EMMC
2.根据分区,修改petalinux-config ---> u-boot Configuration ---> u-boot script configration。ubuntu20.04安装后没有wifi,网卡为intel AX201,删除/usr/lib/firmware中的iwlwifi-ty-a0-gf-a0.pnvm。然后将image.ub使用cp指令拷贝进 /mnt/mmcFat即可,也就是把uImage 拷贝到 /dev/mmcblk1p1;--可以设置为128MB。
2020-03-08 21:32:08 10312 2
线程加锁程序,pthread-mutex-t
2022-10-18
基于udp协议的通信模型udpServer.c和udpClient.c
2022-10-18
阻塞IO驱动代码和makefile
2022-10-16
AsynchronousIO,异步IO驱动代码和makefile
2022-10-16
非阻塞IO驱动和makefile
2022-10-16
PL-PS的中断驱动程序,带makefile
2022-10-16
vivado(2014+2016+2017+2018+2019+2020都能使用) SRIO licence
2022-10-16
ZYNQ AD9361的裸机SDK配置代码
2022-10-15
QPSK调制解调代码MATLAB仿真
2022-10-15
BPSK调制解调MATLAB代码
2022-10-15
16QAM 是正交移幅键控调制
2022-10-15
单载波频域均衡(SC-FDE) 的设计
2022-10-15
2PSK调制解调原理,MATLAB代码
2022-10-15
2FSK调制解调实验,MATLAB代码
2022-10-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人