自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

悟已往之不谏 知来者之可追

年轻人总是要为一些自己认为有意义的事情而废寝忘食,通宵达旦,直至白发方休...

原创 【SoC FPGA学习】十四、基于 Linux 标准文件 I/O 的设备读写

一、什么是文件 I/O Linux 下的输入输出(I/O),设计成“一切皆文件”,把各种各样的输入输出(I/O)当成文件来操作,统一用文件 I/O 函数的形式,提供给应用程序调用。 Linux 下的文件概念不仅仅是我们日常所理解的文件例如 txt 文本、 sh 脚本, Linux 系统下一个目录,...

2020-08-31 21:11:03 121 0

原创 【SoC FPGA学习】十一、基于 Linux 应用程序的 HPS 在线配置 FPGA

在众多的嵌入式系统应用中, 有一类应用可能需要根据不同的应用场景,动态的更改 FPGA 内部的逻辑设计, 以适配不同的工作环境。 例如在一个数据采集系统中,连接不同型号的模拟数据采集卡, 其所需要的 FPGA 接口逻辑以及内部的数据变换处理逻辑都有可能不同。不同性能的 ADC 芯片其所能工作的采样...

2020-08-31 10:10:47 137 0

原创 【SoC FPGA学习】十三、编译嵌入式 Linux 系统内核

一、简单介绍 SoC FPGA 上的 HPS 能够运行标准的 Linux 系统。而 Linux 系统是一个高度可裁剪的系统,支持用户根据自己实际的硬件平台,选择需要的驱动和功能,并编译得到 Linux 系统镜像。 通过此种方式,可以使得编译得到的 Linux系统镜像文件尺寸非常的小,以便于部署到各...

2020-08-30 00:16:11 171 0

原创 【SoC FPGA学习】十二、Linux 设备树的原理与编写I2C控制器应用实例

在《【SoC FPGA学习】八、从零开始体验一把为 HPS 添加外设,以 UART 外设为例》章节,学习了如何使用SoC EDS 软件为创建好的包含 HPS 的 Qsys 系统添加 UART 外设并生成相应的设备树(dts) 文件。在《【SoC FPGA学习】十一、基于 Linux 应用程序的 H...

2020-08-29 22:38:15 95 0

原创 【SoC FPGA学习】十、SoC FPGA 开发板的 FPGA 配置数据下载和固化

生成配置数据二进制文件 一、SoC FPGA 启动配置方式介绍 Intel Cyclone V SoC FPGA 支持在上电时根据启动设置引脚的电平状态选择从 EPCS 或者 HPS 中启动。一般的硬件板卡在设计时,都使用拨码开关来设置启动设置引脚的电平。具体是通过 EPCS 还是 HPS 启动,...

2020-08-28 23:01:13 223 0

原创 【SoC FPGA学习】九、为新添加的 UART 外设编写应用程序

一、更新hps_0.h文件 我们是在 FPGA 侧添加的uart外设,对应的需要更新这些外设的硬件信息。详细介绍可参考《SoC FPGA学习】五、基于虚拟地址映射的 Linux 硬件编程,在已有工程上实现按键与LED的联动》中的4.2小节,这里直接操作。 打开 SoC EDS Command Sh...

2020-08-27 17:18:03 78 0

原创 【SoC FPGA学习】八、从零开始体验一把为 HPS 添加外设,以 UART 外设为例

在本系列教程中 《【SoC FPGA学习】二、SoC FPGA硬件初探,基础扫盲 》一节中的2.5小结简单介绍了一下 SOC FPGA添加timer外设的方法,但是此外设并没有实际的引出脚,并且在那篇文章的介绍中也并没有实际的跑进来timer,这一节我们就拿UART外设为例,从来开始了解添加 SO...

2020-08-27 16:42:06 406 0

原创 【SoC FPGA学习】七、基于虚拟地址映射的 I2C 编程应用

在前面两节的内容中, 通过虚拟地址映射的形式,已经完成了基于虚拟地址映射的 PIO、 UART IP 核的使用。这些 IP 核对于使用过基于 NIOS II 的SOPC 技术开发的读者,应该来说已经是十分的熟悉了。而这个 oc_i2c 核,则是一个第三方开源的 IP 核, 不仅提供了完整的 IP ...

2020-08-26 22:21:52 116 0

原创 【SoC FPGA学习】番外篇一、SOC FPGA常见问题集锦

小梅哥论坛已有的:【SoC FPGA开发常见问题合集】SoC FPGA开发过程中常见问题 问题:SOC-EDS5(Eclipse)出现“You are opening a large file.Scalability mode has been turned on for this edito...

2020-08-26 20:08:23 216 0

原创 【SoC FPGA学习】六、基于虚拟地址映射的 UART 编程应用

上一节的实验,完成了虚拟地址的映射和基于虚拟地址的按键和 LED指示灯的编程控制。 本节将继续使用该种方法,完成对 AC501_SoC_GHRD 工程中添加的 uart_0 外设进行控制。 一、UART (RS-232 Serial port) 核介绍 UART (RS-232 Serial po...

2020-08-26 19:55:59 111 0

原创 【TDA2x学习】番外篇三、VisionSDK开发指南笔记

1、介绍 Vision Software Development Kit (SDK)是一种多处理器、多通道的用于TI家族ADAS SoCs的软件开发平台。该软件框架允许用户创建不同的ADAS应用程序数据流,包括视频捕获、视频预处理、视频分析算法和视频显示。 本文档解释了以下步骤 1、使用Visi...

2020-08-24 14:26:28 286 0

原创 【TDA2x学习】番外篇二、高效使用VScode工具

一、创建工程 打开 VScode,选择:文件->打开文件夹…,选中 vsdk@ycc 文件夹,如下图所示: 打开 vsdk@ycc 目录以后, VSCode 界面如下图所示: 点击“文件->将工作区另存为…”,打开保存工作区对话框,将工作区保存到 vsdk@ycc 源码根目录下,...

2020-08-24 10:35:23 217 0

原创 【TDA2x学习】番外篇一、TDA2x工程学习手记

TIDL :TI Deep Learning【TI深度学习】 SBL:Secondary Boot Loader 【辅助引导加载程序】 TDA2xx:dra7x $(MAKEAPPNAME) = apps <MAKECONFIG>=tda2xx_evm_linux_all 或 tda...

2020-08-24 10:19:24 298 0

原创 【TDA2x学习】V、编译并运行第一个SDK程序(最新版)【包含RTOS和HLOS】

一、下载SDK 在/home/clay目录下新建名为linux的文件夹,下载SDK压缩包到该文件夹并解压,如下图所示 【vsdk.tar.gz压缩包里主要包含ti_components和vision_sdk两个文件夹】 踩过的坑: ①、在windows下未经压缩,直接通过FileZilla...

2020-08-20 17:30:51 377 7

原创 【C++快速上手】十三、extern学习笔记

总结 在C语言的头文件中,对其外部函数只能指定为extern类型,C语言中不支持extern "C"声明,在.c文件中包含了extern "C"时会出现编译语法错误。所以使用extern "C"全部都放在于cpp程序相关文件或其头文件中...

2020-08-18 19:54:28 64 0

原创 【SoC FPGA学习】五、基于虚拟地址映射的 Linux 硬件编程,在已有工程上实现按键与LED的联动

参考教程中的以下章节: 传统的单片机得到的是外设寄存器的绝对地址。而在HPS中,得到的是经过MPU转化过后的虚拟地址(虚拟地址映射),这样CPU 访问外设寄存器就像直接访问内存总线上的某个地址一样方便了。这样在编写 Linux 应用程序的时候通过简单的操作完成虚拟地址映射,就能够非常方便的去操...

2020-08-18 15:45:21 185 0

原创 【C++快速上手】十二、位域学习笔记

总结 位域在内存中的布局是与机器有关的 位域的类型必须是整型或枚举类型,带符号类型中的位域的行为将因具体实现而定 取地址运算符(&)不能作用于位域,任何指针都无法指向类的位域 1、位域(Bit field)是什么? “ 位域 “ 或 “ 位段 “(Bit field)为一种数据结构,...

2020-08-17 17:45:17 51 0

原创 【C++快速上手】十一、assert学习笔记

总结 断言,是宏,而非函数 忽略断言,在代码开头加上:#define NDEBUG 1、第一个断言案例 断言,是宏,而非函数。assert 宏的原型定义在 (C)、(C++)中,其作用是如果它的条件返回错误,则终止程序执行。可以通过定义 NDEBUG 来关闭 assert,但是需要在源代码的...

2020-08-17 17:28:29 48 0

原创 【C++快速上手】十、volatile学习笔记

总结 volatile 关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素(操作系统、硬件、其它线程等)更改。所以使用 volatile 告诉编译器不应对这样的对象进行优化。 volatile 关键字声明的变量,每次访问时都必须从内存中取出值(没有被 volatile 修饰...

2020-08-17 17:22:22 49 0

原创 【C++快速上手】九、virtual学习笔记

结论 虚函数的调用取决于指向或者引用的对象的类型,而不是指针或者引用自身的类型。 默认参数是静态绑定的,虚函数是动态绑定的。 默认参数的使用需要看指针或者引用本身的类型,而不是对象的类型。 1、虚函数与运行多态 虚函数的调用取决于指向或者引用的对象的类型,而不是指针或者引用自身的类型。 #i...

2020-08-17 16:56:59 56 0

原创 【C++快速上手】八、C++虚函数的vptr与vtable学习笔记

结论 C++的动态多态性是通过虚函数来实现的;为了实现虚函数,C ++使用一种称为虚拟表的特殊形式的后期绑定 每个使用虚函数的类(或者从使用虚函数的类派生)都有自己的虚拟表(vtable) 编译器还会添加一个隐藏指向基类的指针,我们称之为vptr 类指针调用函数通常使用->操作符;引用调用...

2020-08-17 15:51:22 59 0

原创 【C++快速上手】七、纯虚函数和抽象类学习笔记

总结 纯虚函数(或抽象函数)是我们没有实现的虚函数!我们只需声明它,通过声明中赋值0来声明纯虚函数! 纯虚函数:没有函数体的虚函数;抽象类:包含纯虚函数的类,不能创建对象。 抽象类只能作为基类来派生新类使用,不能创建抽象类的对象,可以创建抽象类的指针和引用。 抽象类中:在成员函数内可以调用...

2020-08-17 11:51:28 52 0

原创 【C++快速上手】六、sizeof学习笔记

总结 原则1:空类的大小为1字节 原则2:一个类中,虚函数本身、成员函数(包括静态与非静态)和静态数据成员都是不占用类对象的存储空间。 原则3:对于包含虚函数的类,不管有多少个虚函数,只有一个虚指针vptr的大小。 原则4:普通继承和派生类继承了所有基类的函数与成员,要按照字节对齐来计算大小 原...

2020-08-17 10:57:28 57 0

原创 【C++快速上手】五、inline学习笔记

结论 inline要起作用,inline要与函数定义放在一起,inline是一种“用于实现的关键字,而不是用于声明的关键字” 内联能提高函数效率,但并不是所有的函数都定义成内联函数!内联是以代码膨胀(复制)为代价,仅仅省去了函数调用的开销,从而提高函数的执行效率。如果代码执行开销大于函数调用开销...

2020-08-17 10:27:18 49 0

原创 【C++快速上手】四、this指针学习笔记

结论 this在成员函数的开始执行前构造,在成员的执行结束后清除。 类的成员默认是private,而结构是public 1、this指针的作用 python中的self类比到C++中就是this指针,this指针的用处如下: (1)一个对象的this指针并不是对象本身的一部分,不会影响si...

2020-08-17 10:15:05 50 0

原创 【C++快速上手】三、static学习笔记

结论 类中的静态变量由对象共享。对于不同的对象,不能有相同静态变量的多个副本。也是因为这个原因,静态变量不能使用构造函数初始化。 当与不同类型一起使用时,Static关键字具有不同的含义,常用的用法有以下两种: 1、静态变量:函数中的变量,类中的变量 2、静态类的成员(静态成员):类对象和...

2020-08-17 09:36:48 64 0

原创 【C++快速上手】二、const学习笔记

结论 未被const修饰的变量不需要extern显式声明,而const常量需要显式声明extern! const修饰的变量必须初始化! const *表示指针指向为常量,* const表示指针本身是常量! 1、const含义 常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的...

2020-08-16 16:01:34 65 0

原创 【C++快速上手】番外篇二、知识点总结(汇总版)(持续更新...)

重载和多态的区别 重载是同名参数不同,通过参数来确定调用那个函数; 多态是同名同参数,通过函数的实际类型决定调用那个函数。 默认情况下,在类中定义的所有项目都是私有的。 类根据访问权限总结出不同的访问类型 多继承 多继承即一个子类可以有多个父类,它继承了多个父类的特性。C++ 类可以从...

2020-08-16 14:54:06 67 0

原创 【C++快速上手】一、CLion环境搭建,HelloWorld初探

MinGW,Cygwin是什么?什么区别? 一、下载安装CLion 前往JET BRAINS官网下载CLion 下载完毕后的安装包,如下图所示。 双击安装包,依次按照如下步骤进行安装 二、下载MinGW,配置CLion 前往MinGW下载主页,点击下图所示选项,进行下载 D...

2020-08-11 13:06:06 130 0

原创 【C++快速上手】番外篇一、Tip of the day in CLion(持续更新...)

记录CLion的一些Tips!

2020-08-11 13:05:01 77 0

原创 【SoC FPGA学习】四、使用gdbserver远程调试Linux应用程序

gdbserver调试实验 保证电脑能够网络访问开发板 配置IP地址有两种方式: ifconfig eth0 192.168.×××.××× 或者编辑/etc/network/interfaces 使用passwd命令为root账号设置密码 将希望调试的程序拷贝到开发板中 为程序添加可执行...

2020-08-05 21:52:23 109 0

原创 【SoC FPGA学习】三、通过Hello World快速上手SOC FPGA的应用程序开发

Hello world创建流程 打开SoC EDS Command shell软件 输入eclipse& file -> new -> C project 创建main.c文件 编写c程序 编译可得到可执行程序 制作开发板Linux系统镜像SD卡 将编译得到的可执行程序拷贝到...

2020-08-05 19:27:13 390 0

原创 【SoC FPGA学习】二、SoC FPGA硬件初探,基础扫盲

FPGA:现场可编程逻辑门阵列 编程语言:HDL(Verilog VHDL) FPGA - 高效并行执行 FPGA和ARM可以互补 Intel PSG(原ALTER) SOPC:(NIOS II + FPGA)通过Avalon MM 以及 Avalon ST总线进行通信 SOPC是使用FPGA做...

2020-08-05 11:43:57 503 0

原创 计算机中字符的编码方式

一、编码背景 在计算机上,我们看到的字符“A”可能长这样: 也可能长这样: 对于同一个TXT文件中的内容,你在Notepad上选择不同字体时,字符显示的形状不一样。所以TXT文件中保存的是字符的核心:它的编码值。而Notepad上显示时,这些字符对应什么样的形状态,这是由字符文件决定的。 编码...

2020-08-04 21:11:00 153 0

原创 【ZYNQ学习之FPGA开发】零、ZYNQ硬件初探

ZYNQ All Programmable SoC 赛灵思(Xilinx)推出的新一代全可编程片上系统,它将处理器的软件可编程性与FPGA的硬件可便乘兴进行完美整合,以提供无与伦比的系统性能、灵活性与可扩展性。 ZYNQ旨在为视频监控、汽车驾驶员辅助以及工厂自动化等高端嵌入式应用提供所需的处理能...

2020-08-02 20:21:58 721 0

原创 【ZYNQ学习之FPGA开发】二、一文快速上手 Verilog 基础知识(总结版)

一、FPGA PLD - 可编程逻辑器件 CPLD - 复杂可编程逻辑器件【基于乘积项的与或逻辑阵列】 FPGA - 现场可编程逻辑门阵列【基于查找表的CLB阵列】 两者虽然有差异,但也只是硬件层面,在编程上是没有区别的! 什么是FPGA? 一种可通过编程来修改其逻辑功能的数字集成电...

2020-08-02 11:47:54 341 1

原创 【ZYNQ学习之FPGA开发】一、通过点亮LED,上手ZYNQ中PL端(FPGA端)的开发流程

文章目录一、创建LED工程二、创建设计源文件三、RTL分析,进行引脚绑定四、synthesis - 综合五、时序约束六、生成比特流文件七、仿真八、下载验证PL设计九、内嵌逻辑分析仪9.1、方法一9.2、方法二 一、创建LED工程 打开位于桌面的vivado 2017.4快捷方式 选择Creat...

2020-08-01 18:27:40 1263 0

原创 同一局域网下的两台电脑使用网线高速传输数据(基于Windows10)

需求 在日常生活过程中,我们时常面临这样的需要:把一台电脑的文件数据拷贝到另一台电脑上。如果文件数据并不大,利用网络传输或者U盘拷贝就可以很好地解决这个问题。但我们也难免会碰上要拷贝的文件太大,没有足够大的移动硬盘或者传输速度太慢,如需要置换新电脑时的文件复制。这个时候,考虑使用网线传输就是一个很...

2020-08-01 13:08:05 345 0

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