- 博客(19)
- 收藏
- 关注
原创 ZYNQ7000(AX7020)移植Linux操作系统(四):SD卡的制作
SD卡分区虚拟机上检测SD卡, 设置两个分区 , 第一个格式为FAT 名字也是FAT , 第二个格式为EXT4 , 把BOOT.BIN文件和uImage文件和设备树文件devicetree.dtb放在第一个分区文件系统放在第二个分区, 然后解压缩 , 上电就可运行 。...
2020-06-22 11:17:28
898
原创 ZYNQ7000(AX7020)移植Linux操作系统(三):内核的编译
一、Linux内核介绍Linux是一个自由的、免费的,源码开放的操作系统。一些厂商将Linux系统内核与应用程序个文档包装起来,并提供一些安装界面和系统设定管理工具的一个软件包的集合,例如RedHat,Debian、Ubuntu、Novell/SuSE等。Ubuntu版本号由该次发布的年份和月份组成,半年发布一次。首次发布是在2004年10月,因此该版本为4.10。于2009年4月23发布,因此该版本号为9.04。RedHat操作系统更多的应用于服务器,而Ubuntu操作系统更多应用于个人电脑。Linu
2020-06-22 11:04:49
1683
原创 ZYNQ7000(AX7020)移植Linux操作系统(二):u-boot的编译和启动
总述我们已经在 PC 上已经安装了 Ubuntu 客户操作系统,以及在 Ubuntu 操作系统里安装了 SDK 2015.4 工具。要想在 Zynq 平台上运行 Ubuntu 操作系统,必项预先制作作镜像文件,而镜像文件中必项有 u-boot、内核、设备树及文件系统。本章则将为大家说明u-boot 的原理及配置和编译的方法,以及 u-boot 启动测试。一、u-boot 原理及实现u-boot是德国DENX小组开发的用于多种嵌入式CPU的bootloader程序。当前,u-boot不仅支持嵌入式 Li
2020-06-22 00:25:54
3615
原创 ZYNQ7000(AX7020)移植Linux操作系统(一):Linux开发环境的搭建
ZYNQ7000移植Linux操作系统(一):Linux开发环境的搭建一、安装 Linux 版本的 SDK1.从网上下载Linux SDK 2015.4的软件安装包(Xilinx_Vivado_SDK_2015.4_1118_2.tar.gz)兇拷贝刡移劢硬盘上,然后从移劢硬盘再拷贝刡 VMware Workstation 虚拟机癿虚拟硬盘上。电脑连接移劢硬盘后,再打开虚拟机癿移劢设备连接(点击菜单虚拟机->可移劢设备->连接癿移劢设备名称->连接)。2.在对应目录下面输入 L
2020-06-21 23:26:47
1998
1
原创 RTAI内核功能分析和关键技术
Linux 内核中灵活的模块化机制在 RTAI 中得到完美发挥。按照实现功能的不同,RTAI 将系统划分为多个不同的模块,比如:硬件抽象层模块、实时任务调度模块、管道机制模块、内存共享机制模块、邮箱机制模块和信号量机制模块等。接下来对 RTAI 的几个主要功能模块进行简单介绍。硬件抽象层模块(rtai_hal.ko)是 RTAI 最重要的模块之一。该模块主要实现与 ADEOS 之间进行交...
2020-01-15 13:55:47
1352
原创 文件系统制作的解决方案
对于一个嵌入式Linux来说,有了 Image/uImage, 和 devicetree.dtb,最后还需要文件系统。Linux 内核启动阶段,待所有的驱动和外设都初始化好了以后,最后要加载一种文件系统(基于 flash 的 jffs2 或者基于 RAM 的 ramdisk 或者基于网络的 NFS 等等),Linux 才可以正常启动。(我们在进行 Linux应用程序开发式时,会编写 Linu...
2020-01-15 13:25:36
182
原创 RTAI/LINUX的系统结构
综述RTAI 的设计思想源于 RT-Linux,设计一个专门处理实时任务的实时调度器, 通过虚拟中断技术把 Linux 当作一个优先级最低的实时任务来运行,系统中的实时任务和非实时任务分别运行在 RTAI 和 Linux 上。出于可移植性考虑,早前版本的 RTAI 在硬件和 Linux 之间定义了一个实时硬件抽象层(Real-Time Hardware Abstraction Layer,RT...
2020-01-15 11:58:31
1633
原创 基于ADEOS的RTAI/Linux系统运行模型
在该模型中,假设系统产生两个硬件中断:INT1 和 INT2。对于这两个中断,RTAI 和 Linux 都分别有各自的中断服务程序 ISR1 和 ISR2,再由 ISR1和 ISR2 触发各自的任务 1 和任务 2。接下来对图 4-4 给出的模型进行分析。当 ADEOS 接收到中断 INT1 后,开始沿着中断管道在各域之间传播 INT1;首先传到的域是优先级最高的 RTAI,由 AD...
2020-01-15 11:48:14
630
原创 交叉调试工具集arm-linux-gdb的使用命令--记录防忘
方法交叉编译生成可执行文件之后,放到NFS的挂载目录下终端上执行:./gdbserver 192.168.1.10:2345 helloworld在HOST上执行:arm-linux-gdb helloworldtarget remote ipaddr:portGDB的常用指令load:装入一个程序;symbol-file:装入符号库文件,可以是用-g参数编译的可执行文件;f(...
2020-01-15 09:46:02
224
原创 交叉编译和交叉调试环境搭建
1. 交叉编译器1.1 交叉编译器介绍在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码,而这种工具就是交叉编译器(cross compiler)。1.2 搭建交叉编译环境1.2.1 实验环境交叉编译工具:arm-linux- 4.2.2编译平台:ubun...
2020-01-15 09:38:34
300
原创 Linux操作系统设备树详解
设备树在Linux3.x版本后,arch/arm/plat-xxx和arch/arm/mach-xxx中,描述板级细节的代码(比如platform_device、i2c_board_info等)被大量取消,取而代之的是设备树,其目录位于arch/arm/boot/dts1.设备树的组成1个dts文件+n个dtsi文件,它们编译而成的dtb文件就是真正的设备树soc厂商会把soc公共的特性和...
2020-01-14 21:37:08
508
原创 【Linux】硬中断和软中断
中断 中断本质上是-一种特殊的电信号,由硬件设备发向处理器。从物理学的角度看,中断是一种电信号,由硬件设备生成,并直接送入中断控制器的输入引脚中一中断控制器是个简单的电子芯片,其作用是将多路中断管线,采用复用技术只通过一个和处理器相连接的管线与处理器通信。当接收到一个中断后,中断控制器会给处理器发送一个电信号。处理器一经检测到此信号,便中断自己的当前工作转而处理中断。此后,处理器会通知操作系统已...
2020-01-14 21:10:27
244
原创 Linux移植过程记录及命令记录
一.下载核心以及相应补丁:Linux核心:linux-2.4.18.tar.bz2补丁:patch-2.4.18-rmk7.gzpatch-2.4.18-rmk7-swl8.gzpatch-2.4.18-rmk7-swl8-cy2.gzpatch-2.4.18-rmk7-swl8-cy2-lc3.gz二. 解压缩:tar xzvf linux-2.4.18.tar.gzgunz...
2020-01-14 21:03:49
358
原创 Linux源码目录结构和Linux文件系统目录结构
学习Linux也有一段时间了,具体来整理一下Linux源码的目录结构和文件系统的目录结构,以便加深记忆。一、Linux源码的目录结构首先上一张截图,如下所示:再看各个文件的介绍,借用一下其他资源。arch:这个为目录是架构相关,里面存放了许多CPU架构,比如arm,x86,MIPS,PPC等,处理器原厂提供一套Linux内核的源码,那么在这个目录下都有一套针对具体处理器CPU的子目录。...
2020-01-14 16:58:25
350
原创 C++中对象创建过程描述
创建对象的过程1 分配内存空间2 初始化成员变量(使用初始化列表)3 调用构造函数1 分配内存空间(A a 与 new A 是不同的)对于全局对象,静态对象以及分配在栈区域内的对象,对它们的内存分配是在编译阶段就完成了,而对于分配在堆区域内的对象,它们的分配是在程序运行阶段完成的。内存空间的分配过程中需要确定分配空间的大小,即类对象的大小,这个问题是编译器根据类数据成员来进行分配。...
2019-11-21 11:40:52
2825
原创 C++结构体定义的四种方式
没什么逻辑,只需要记住,为了防止忘记在这里写一下第一种:先构造后定义struct student{ int number; char name[20]};student stu1;第二种:构造的同时进行定义struct student{ int number; char name(20);} stu2;第三种:构造的同时进行定义,省略类型名,不能再定义新的变量s...
2019-11-21 11:07:43
2882
1
原创 C++为什么使用模板类
直接上作用(1)可用来创建动态增长和减小的数据结构(2)模板类是类型无关的,因此具有很高的可复用性(3)它在编译时而不是运行时检查数据类型,保证了类型的安全(4)它是平台无关的,具有可移植性(5)可用于基本数据类型...
2019-11-21 10:47:23
998
1
原创 C++11中的可变参数模板
定义可变参数模板:C++11新增的提高泛型编程能力的可变参数模板,可对参数进行了高度泛化,可以表示从0到任意数目、任意类型的参数。其语法为:在class或typename后面带上省略号”。举例Template<typename... T>void func(T ... args){ cout<<"num is"<<sizeof ...(args)...
2019-11-20 21:30:56
337
2
原创 C++关键字explicit详细介绍
C++关键字explicit的详细介绍介绍实例未加explict的类的隐式转换加explicit修饰的构造函数不能隐式类型转换总结介绍首先一句话记住他的使用范围:explicit关键字只用于修饰C++中只有一个参数的构造函数,这就是它的全部作用域,下面一句话说出explicit的作用:用于声明该类的构造函数(只有一个参数)是显示调用的。因为默认情况下,类的构造函数都是implicit的,它可...
2019-11-20 21:14:31
618
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人