- 博客(103)
- 收藏
- 关注
原创 【C语言与Python学习笔记目录】
【C语言与Python学习笔记目录】为了极大程度地方便大家查阅资料,我特地将C语言和Python的学习笔记整理成目录的形式,大家直接就可以链接进去,就不用了找了,只需收藏本页就可以。小白之路艰辛,希望在帮助到大家的同时能收获到大家小小的赞~C语言C语言-基础入门-学习笔记(1):概述C语言-基础入门-学习笔记(2):常量与变量&基本数据类型C语言-基础入门-学习笔记(3):表达...
2019-11-19 22:14:41 4277 5
原创 Xilinx-ZYNQ7000系列-学习笔记(28):ZYNQ多中断冲突问题
当PS端使用2个以上中断时,如果机械性地将两部分中断代码移植到一起,会出现只有最后初始化的中断能使用,前面的都不可用。
2021-12-16 19:50:47 5422 12
原创 Xilinx-ZYNQ7000系列-学习笔记(27):AXI时序分析
Xilinx-ZYNQ7000系列-学习笔记(27):AXI时序分析一、AXI基本知识此部分之前的博客写过,大家请参考Xilinx-ZYNQ7000系列-学习笔记(10):AXI总线下面将AXI_LITE各信号所表示的意义拿来:官方给出的AXI握手协议如下:AXI4 所采用的是一种 READY,==VALID ==握手通信机制,简单来说主从双方进行数据通信前,有一个握手的过程。 传输源 产生 VLAID 信号来指明何时数据或控制信息有效。而 目地源产生 READY 信号来指明已经准备好接受数据
2021-08-05 11:30:11 2635 3
原创 Xilinx-ZYNQ7000系列-学习笔记(26):CAN总线
Xilinx-ZYNQ7000系列-学习笔记(26):CAN总线前言:一直忙着找工作和毕业的事,许久未操刀了,最近需要用到新的知识,宗旨还是在督促自己学习的同时,总结笔记,帮助大家。老本行不能丢!一、CAN总线概述2.1 独立看门狗二、CAN总线使用方法2.1 CAN总线结构下图为CAN控制器的框图:配置寄存器(Configuration Registers):CAN 控制器配置寄存器定义了配置寄存器。该模块允许用于通过APB 接口对寄存器进行读写访问。收发消息(Transmit and
2021-08-02 20:13:47 8836 8
原创 Xilinx-AX7103-学习笔记(25):基于UDP的以太网通信
Xilinx-AX7103-学习笔记(25):基于UDP的以太网通信实验将实现AX7103开发板和PC之间进行以太网数据通信, 通信协议采用Ethernet UDP通信协议。开发板上FPGA通过以太网PHY芯片KSZ9031RNX和网口连接, 通过RGMII接口跟FPGA进行数据通信。一、基本知识介绍从硬件角度来看以太网是由CPU,MAC,PHY三部分组成的,如下图:上图中DMA集成在CPU,CPU,MAC,PHY并不是集成在同一个芯片内,由于PHY包含大量模拟器件,而MAC是典型的数字电路,考虑
2021-02-26 16:42:54 4041 1
原创 Xilinx-Spartan6-学习笔记(24):通过SPI总线读写FLASH
Xilinx-Spartan6-学习笔记(24):通过SPI总线读写FLASH利用SPI总线实现对FLASH进行读写,写入255个数据再读出255个数据。一、SPI总线时序介绍
2021-02-09 15:47:08 3167 5
原创 Xilinx-Spartan6-学习笔记(23):IIC时序分析
Xilinx-Spartan6-学习笔记(23):IIC时序分析仍然是基于黑金教程的基础上的个人分析。1、IIC时序简介对于IIC的时序来说,主要有接收和发送两种,同时每种又分为读写单个或多个字节的情况,4种时序可以用下图来表示:(1)写单个存储字节:起始信号(主机发送)+设备地址(主机发送)+ 应答信号(从机发送)+ 字地址(主机发送)+应答信号(从机发送)+ 有效数据(主机发送)+ 应答信号(从机发送) + 停止信号(主机发送)(2)写多个存储字节:同理,只是发送有效数据是多个字节隔开(3
2021-01-29 17:46:06 1850 1
原创 Xilinx-Verilog-学习笔记(22):直观理解FPGA的设计流程(设计、综合、仿真、烧录)
Xilinx-Verilog-学习笔记(22):直观理解FPGA的设计流程(设计、综合、仿真、烧录)为了从更加直观的角度来说明FPGA的设计流程,这里以不同时钟频率的时钟控制LED闪烁为例进行整体介绍。一、规划思路规划思路这一步也是最重要的一步,在进行FPGA设计之前,首先要结合实际的功能对流程进行规划。譬如我们要通过不同频率的时钟对LED灯进行不同频率闪烁的控制。那么要想得到不同频率的时钟,最好的方法就是利用PLL时钟倍频和分频技术对系统时钟进行倍频和分频,进而得到想要的时钟频率。然后再通过所得不同
2021-01-16 16:46:14 2000 3
原创 Xilinx-PYNQ_Z2系列-学习笔记(11):自定义overlay
Xilinx-PYNQ_Z2系列-学习笔记(11):自定义overlay该博文参考:https://blog.csdn.net/bramblewalls/article/details/80045922一、前言首先大致介绍一下PYNQ:PYNQ开源框架可以是嵌入式编程用户在无需设计可编程逻辑电路的情况下充分发挥APSOC功能。PYNQ提供了一个Python接口,可以通过运行在PS中的pyth...
2021-01-13 09:36:06 4065 1
原创 Xilinx-Spartan6-学习笔记(21):UART时序分析
Xilinx-Spartan6-学习笔记(21):UART时序分析由于黑金教程只给出了代码和最终结果,没有中间分析的过程。经过犹豫后,还是决定花功夫进行一下时序分析,为了后续复习方便,也同时监督自己认真对待每一行代码。话不多说,黑金教程里讲的咱们全部都跳过,直接上干货。1、clkdiv.v文件这个文件主要目的是通过50Mhz的系统时钟,分出一个较低频率的时钟用于UART串口驱动。取16倍波特率的目的是对每比特数据有16个时钟进行采样,从而确保不会漏采或者错采。always @(posedge sc
2020-11-19 15:18:26 1691 3
原创 Xilinx-Verilog-学习笔记(20):汉明码编解码与CRC冗余校验
Xilinx-Verilog-学习笔记(20):汉明码编解码与CRC冗余校验一、汉明码编解码1、原理解析
2020-11-13 10:59:19 5529
原创 Xilinx-Verilog-学习笔记(19):正弦波信号发生器与DDS
Xilinx-Verilog-学习笔记(19):正弦波信号发生器与DDS一、正弦波信号发生器1、浮点数的定点化这里以2.918为例,实现浮点数向定点数的转换:(1)在进行浮点转定点之前,要先确定整数部分位宽和小数部分位宽。3位整数位宽,12位的小数位宽,最高位的符号位1位。(2)15位宽的数能够表示的数值范围为-32768到32767。整数部分3位宽的数最大能表示到8,因此最大精度为8/32767=0.000244140625。(3)2.918进行定点化的过程为2.918/(8/32768)=1
2020-11-12 11:33:54 9911 11
原创 Xilinx-Verilog-学习笔记(18):FIFO
Xilinx-Verilog-学习笔记(18):FIFO一、调用ISE中的FIFO1、调用ISE中的IP(1)选择芯片类型,封装,速度以及仿真器和语言等。(2)创建一个新的source文件,并将该文件放到design目录下。(3)创建IP核的配置,这里要与创建工程的一致。(4)选择创建一个FIFO(5)选择FIFO的类型(6)选择FIFO的时钟和内存类型(7)选择FIFO的位宽和深度(8)选择FIFO的一些标志信号(9)选择复位方式这是配置完成后最终生成的报告。
2020-11-10 15:26:16 15537
原创 Xilinx-Verilog-学习笔记(17):异步并口通信
Xilinx-Verilog-学习笔记(17):异步并口通信一、SPI总线1、什么是SPI总线?SPI是串行外设接口(Serial Peripheral Interface),是一种高速的、全双工、同步的通信总线。由于没有应答机制确认是否接收到数据,因此SPI总线与IIC总线相比,在数据可靠性上有一定的缺陷。2、时序特点...
2020-11-08 16:41:40 1929 1
原创 Xilinx-Verilog-学习笔记(16):SPI总线
Xilinx-Verilog-学习笔记(16):SPI总线一、SPI总线SDI是主机(FPGA一般做主机)向从机发送数据的线,SDO为从机向主机发送的数据的线。一般SDI发送的是一些控制指令,SDO发送的是一些反馈信息。 CS为片选信号,选择信号是否有效。SPI总线有三线和四线型,三线型为SDIO,是一种双向的。...
2020-11-05 17:12:49 2949 1
原创 Xilinx-Verilog-学习笔记(15):Verilog基础语法演示(2)
Xilinx-Verilog-学习笔记(15):Verilog基础语法演示(2)一、移位寄存器移位寄存器原理:按照时钟节拍,一位一位移进来,起初寄存器中的值为0,lvds发送过来的数据为lvds d1。本实验采取从左侧移入的方法。第一个时钟周期:{lvds_d1 0000_000}第二个时钟周期:{lvds_d2 lvds_d1 000_000}······第八个时钟周期:{lvds_d8 lvds_d7 ···· lvds_d1}其中,花括号为位拼接符,新移进来的1位与之前移位寄存器中的前
2020-11-02 17:04:53 1340
原创 Xilinx-Verilog-学习笔记(14):Verilog基础语法演示(1)
Xilinx-Verilog-学习笔记(14):Verilog基础语法演示一、design文件和testbench文件1、触发器1.1 design文件//此处为模块与接口定义module ex_trigger( input wire sclk, input wire rst_n, input wire [7:0] d, output wire [7:0] q);//声明一个寄存器型用于always中reg [7:0] q_r;//always块always @(pos
2020-09-13 21:56:02 1446
原创 C语言-基础入门-学习笔记(17):存储类、作用域、生命周期、链接属性的总结
C语言-基础入门-学习笔记(17):存储类、作用域、生命周期、链接属性的总结一、总表变量类型存储类作用域生命周期链接属性局部变量栈所在代码块函数结束无链接static局部变量(为0)bss段所在代码块程序结束无链接static局部变量(赋值)数据段所在代码块程序结束无链接全局变量(为0)bss段所在文件程序结束外链接static全局变量(为0)bss段所在文件程序结束内链接static局部变量(赋值)数据段
2020-07-13 17:00:47 291
原创 C语言-基础入门-学习笔记(16):单链表与双链表
C语言-基础入门-学习笔记(16):单链表与双链表一、链表简介我们都知道,数组虽然使用方便,但是有两个重要的缺陷:(1)数组内的元素类型必须相同。(2)数组的元素个数在初始化之后就不能被改变了。那么对于这两种情况的解决方法分别是:(1)通过结构体来实现元素类型的不同。(2)通过链表方式来实现元素个数的改变。几乎可以这样理解:链表就是一个元素个数可以实时变大/变小的数组。顾名思义,链表就是用锁链连接起来的表。这里的表指的是一个一个的节点(一个节点就是一个校区),节点中有一些内存可以用来存储数
2020-06-15 15:23:25 1180
原创 Xilinx-ZYNQ7000系列-学习笔记(6):ZYNQ无DDR启动
Xilinx-ZYNQ7000系列-学习笔记(6):ZYNQ无DDR使用OCM加载程序之前由于某项目需求,需要去掉DDR,但是去掉DDR以后会导致程序无法正常启动,因为默认的启动方式会经过DDR这一步。在查阅了大量的资料和仔细研究了FSBL的主函数启动顺序后,现总结如下,希望能帮助到大家。1、导入SDK并创建FSBL文件(这一步就不细说了,具体步骤我在上一篇博客中有写,大家可以参考一下)。...
2020-05-15 16:23:00 2607 3
原创 Linux-网络编程-学习笔记(20):网络基础与编程实践
Linux-网络编程-学习笔记(20):网络基础与编程实践一、网络基础1. 网络通信概述网络是用物理链路将各个孤立的工作站或主机相连在一起,组成数据链路,从而达到资源共享和通信的目的。通信是人与人之间通过某种媒体进行的信息交流与传递。网络通信是通过网络将各个孤立的设备进行连接,通过信息交换实现人与人,人与计算机,计算机与计算机之间的通信。站在进程的层面来说,网络之间的通信其实就是位于网络中...
2020-05-09 09:57:07 2892 3
原创 Linux-应用编程-学习笔记(19):线程全解
Linux-应用编程-学习笔记(19):线程全解前言:线程是解决进程间通信的一个非常好的方法,它保留了进程技术实现多任务的特性,是内核调度的最小单元。多线程在多核心CPU上面更有优势。一、线程引入1. 用线程来解决进程的劣势我们知道进程技术发明的主要目的是用来实现多任务系统需求(多任务的需求是客观的)。进程技术的主要功能是为了实现CPU的分时复用,从而实现宏观上的并行。但是要知道进程之间...
2020-05-07 10:33:24 1996
原创 Linux-应用编程-学习笔记(18):对于阻塞式IO困境的解决
Linux-应用编程-学习笔记(18):对于阻塞式IO困境的解决前言:内核默认的IO状态基本都为阻塞式,这是因为通过阻塞式的方式能够发挥操作系统的性能,让CPU时刻工作在被需要的情况下。但是只是单纯的阻塞式设计可能会带来一些危害,所以如何设计一种IO多路复用的状态是非常重要的。一、阻塞式IO1. 非阻塞式IO和阻塞式IO的区别为了学习非阻塞IO用法,首先要弄清楚非阻塞和阻塞的区别。非阻塞式...
2020-05-06 16:26:30 2334
原创 Linux-应用编程-学习笔记(17):进程全解
Linux-应用编程-学习笔记(17):进程全解前言:当程序被系统调用到内存以后,系统会给程序分配一定的资源(内存,设备等等)然后进行一系列的复杂操作,使程序变成进程以供系统调用,因此进程是linux系统中非常重要的一个概念。一、程序和环境变量1. 程序的开始和结束1.1 运行前的准备之前一直在说一个程序的开始是main函数,但是在main函数执行之前,操作系统下的应用程序还是需要执行一...
2020-05-05 18:21:32 2299 2
原创 Linux-应用编程-学习笔记(16):文件IO
Linux-应用编程-学习笔记(16):文件IO前言:基于LINUX做应用编程,其实就是通过调用LINUX的系统API来实现需要完成的任务。通过LINUX对文件进行操作的API称为文件IO(input和output),也就是读写文件。一、文件操作的主要API接口API是一些函数,这些函数是由linux系统提供支持的,由应用层程序来使用。应用层程序通过调用API来调用操作系统中的各种功能,来干...
2020-04-30 13:12:01 2222
原创 Linux-文件系统-学习笔记(15):利用busybox构建根文件系统
Linux-文件系统-学习笔记(15):利用busybox构建根文件系统前言:一整套linux在只有内核的情况下是不能工作的,它需要由根文件系统的配置支持。同时根文件系统提供了根目录、shell命令集和linuxrc应用程序,使得系统能够从进程1中衍生出其他进程。所以rootfs对于操作系统来讲是不可缺少的。一、busybox移植1、什么是busybox?上一篇博客中简单介绍了busybo...
2020-04-07 22:01:59 7345
原创 Linux-文件系统-学习笔记(14):根文件系统原理与nfs搭建方法
Linux-文件系统-学习笔记(14):根文件系统原理与nfs搭建方法一、根文件系统1、根文件系统简介为什么需要根文件系统?(1)init进程的应用程序在根文件系统上,因此向用户态切换时根文件系统必不可少。(2)根文件系统提供了根目录/ ,相当于一个数根、起点,通过这个能够找到你想要找的那个位置。(3)内核启动后的应用层配置(etc目录)在根文件系统上。几乎可以认为:发行版=内核+ro...
2020-04-06 20:07:28 4154
原创 Linux-内核-学习笔记(13):移植三星官方内核
Linux-内核-学习笔记(13):移植三星官方内核一、移植前的准备当拿到源代码时,首先要在window下利用SourceInsight创建一个工程,并将uboot源代码加载到SI中,方便修改和查看函数调用。项目->新项目->设置项目名、工程路径->选择整个uboot文件->添加树 项目->同步文件(全打钩)接着要在linux下创建一份,因为配置和编译过程都...
2020-04-05 16:24:46 2435
原创 Linux-内核-学习笔记(12):内核启动过程分析
Linux-内核-学习笔记(12):内核启动过程分析在uboot启动后,会将各种参数通过三个寄存器的方式传递给内核函数,并在执行启动内核后自动结束。内核启动过程会解析参数并初始化各种设备,最终进入到了一种能够实现进程间调度的多进程状态,这些进程里面只要有哪个需要被运行,调度系统就会终止cpu_idle死循环进程(空闲进程)转而去执行有意义的干活的进程,从而实现内核的运转。一、链接脚本vmlin...
2020-04-04 17:38:23 4873
原创 Linux-内核-学习笔记(11):内核配置和编译原理
Linux-内核-学习笔记(11):内核配置和编译原理一、内核简介1. 操作系统1.1、什么是操作系统?操作系统本质上是一个程序,由很多个源文件构成,需要编译连接成操作系统程序。它主要作用就是管理计算机硬件,给应用程序提供一个运行环境。例如linux、windows、android、ucos就是操作系统。1.2、操作系统核心功能操作系统就相当于你的一个管家,是一些功能的综合体,他会管理...
2020-04-03 15:16:58 5751
原创 Linux-uboot-学习笔记(10):移植三星官方uboot
Linux-uboot-学习笔记(10):移植三星官方uboot前言:当我们在使用某个板卡之前,首先要找到与它对应匹配的uboot,将uboot移植到板卡上,从而实现板卡的一系列启动。这里我们将三星官方开发板的SMDKV210的uboot源代码移植到S5PV210上,从而实现引到210启动各种外设和启动内核。一、移植前的准备当拿到源代码时,首先要在window下利用SourceInsight...
2020-03-31 09:52:22 2855
原创 Linux-uboot-学习笔记(9):uboot硬件驱动
Linux-uboot-学习笔记(9):uboot硬件驱动一、uboot与linux驱动1、驱动是什么?驱动的狭义概念:操作系统中用来具体操控硬件的那部分代码。裸机程序中是直接操控硬件的,而操作系统中必须通过驱动来操控硬件。裸机程序和驱动这两者同样都是控制硬件的,它们之间有什么区别呢?答:驱动有分层结构。操作系统(指的是linux)下MMU肯定是开启的,也就是说linux驱动中肯定都使...
2020-03-29 10:27:44 3490
原创 Linux-uboot-学习笔记(8):uboot启动内核
Linux-uboot-学习笔记(8):uboot启动内核uboot启动的第二阶段主要是执行第一阶段跳转到的start_armboot函数,该BL2阶段在DDR中初始化第一阶段未完成的任务和SoC各种外设。start_armboot函数分析start_armboot函数位于Board.c文件中,从文件名可以看出,该函数主要针对板级初始化的。定义全局变量数据结构体(70)...
2020-03-27 15:58:35 3895
原创 Linux-uboot-学习笔记(7):uboot启动第二阶段源码分析
Linux-uboot-学习笔记(7):uboot启动第二阶段源码分析uboot启动的第二阶段主要是执行第一阶段跳转到的start_armboot函数,该BL2阶段在DDR中初始化第一阶段未完成的任务和SoC各种外设。start_armboot函数分析start_armboot函数位于Board.c文件中,从文件名可以看出,该函数主要针对板级初始化的。通过init_fnc_ptr对函数指针...
2020-03-26 15:56:55 3121 2
原创 Linux-uboot-学习笔记(6):uboot启动第一阶段源码分析
Linux-uboot-学习笔记(6):uboot启动第一阶段源码分析uboot启动的第一阶段主要是start.S文件,也就是在BL1阶段将SD卡的前16K内容加载到SRAM中执行的那部分,从而指导第二阶段BL2的启动任务。start.S源码分析头文件包含(28-33)#include <config.h>。config.h是在include目录下的,这个文件不是源码中本身存...
2020-03-24 09:43:38 3492
原创 Linux-uboot-学习笔记(5):uboot的配置和编译过程代码分析
Linux-uboot-学习笔记(5):uboot的配置和编译过程代码分析在Linux-基础入门-学习笔记(3):uboot常用命令与环境变量一文中,已经对uboot的基本认识有了一个简单的介绍,也知道了uboot是引到操作系统启动和部署整个计算机系统的最重要的一部分,下面对uboot的配置和编译过程代码进行详细分析。首先说明该uboot程序针对samsung的s5pv210板卡:一、Mak...
2020-03-22 18:10:49 3560
原创 Linux-基础入门-学习笔记(4):shell编程常用语法演示
Linux-基础入门-学习笔记(4):shell编程常用语法演示一、shell介绍在之前的博客中已经对shell进行了简单的介绍,并且搭建了简易的shell框架,详细请参考博客:搭建简单的shell框架。编写shell脚本时使用的语言就是shell语言,又叫脚本语言。shell脚本其实是一类语言而不是一个语言。常用的shell语言:sh(dash)、bash、csh、ksh、perl、p...
2020-03-19 11:36:12 3166
原创 嵌入式知识-ARM裸机-学习笔记(13):搭建简单的shell框架
嵌入式知识-ARM裸机-学习笔记(13):搭建简单的shell框架一、shell原理1. 什么是shell?shell中文是壳的意思,在计算机中经常提到shell是用户操作接口的意思。因为计算机程序本身很复杂,里面的实现和外面的调用必须分开。接口本身就是对内部复杂的实现的一种封装,外部只需要通过接口就可以很容易的实现效果,但是却不用理会内部实现的复杂性和原理。操作系统运行起来后都会给用户提...
2020-03-13 16:38:04 4367
原创 嵌入式知识-ARM裸机-学习笔记(12):ADC模数转换器
嵌入式知识-ARM裸机-学习笔记(12):ADC模数转换器一、ADC1. 什么是ADCADC(analog digital converter):模数转换(也就是模拟量转换为数字量)。由于CPU本身是数字的,而外部世界变量(如电压、温度、高度、压力···)都是模拟的,所以需要用CPU来处理这些外部的模拟变量的时候就需要做AD转换。模拟的就是连续的,现实生活当中的时间、电压、高度等都是模拟的...
2020-03-11 17:08:06 4853
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人