嵌入式Linux开发主要有四种方式:裸机开发、SDK开发、驱动开发和应用开发。 1、裸机开发 裸机开发通常指在没有操作系统支持的环境中直接在硬件上运行程序的开发。...在嵌入式Linux SDK开发中,开发者可以利用Linux系统的强大功能和灵活性,同时针对特定的硬件平台进行优化和调整,以满足嵌入式设备的特定需求。...3、驱动开发 驱动开发是指为嵌入式Linux系统编写设备驱动程序的过程。在这个过程中,开发者需要深入理解Linux内核架构,学会如何在Linux内核环境下编写、调试和维护设备驱动程序。...4、应用开发 Linux 应用开发是指在 Linux 操作系统上开发应用程序的过程。这包括创建、编写、调试和优化应用程序,以在 Linux 环境中运行。...Linux 提供了丰富的开发工具和库,使开发者能够构建各种类型的应用,从命令行工具到图形用户界面(GUI)应用,再到服务器端应用。
1、什么时候需要线程同步?...并非所有情况下都需要线程同步,只有在以下几种情况时才需要: 多个线程会修改共享资源:如果一个线程修改某个共享变量,其他线程可能也会修改或读取该变量,这时数据一致性问题就可能发生。...共享资源的写操作是非原子的:很多时候,修改共享资源的操作不是一个瞬时的、不可中断的过程,而是需要多个步骤完成的(如读-改-写的操作)。...2、什么时候不需要线程同步? 如果变量是局部变量(只在某个线程的作用域内),或全局变量但只有一个线程访问它,那么不需要担心数据一致性问题。...假设写操作需要两个时钟周期完成,但在写操作还没完成的过程中,线程B恰好读取了变量x,此时线程B会得到一个旧的值,而不是预期的正确值。 这种情况下,就会导致数据不一致。
从事嵌入式开发12年的我,对架构设计的理解; 2. 对嵌入式系统中的架构设计要刻意训练; 3. 嵌入式系统开发过程中的一些小技巧; 4....(2) 嵌入式开发:Linux 舍我其谁 在嵌入式系统的开发中,在操作系统的选择上几乎没有太大的余地,大部分是 ARM+Linux 组合。...在 Linux 操作系统层面:那些大神们已经把内核和驱动层设计的很完美了,很少需要开发人员做大量的修改。 在应用程序层面:开发人员如果没有什么追求,只为了实现规格书中定义的功能即可。...即使产品需要更新换代,让开发人员重新实现即可,反正只需要功能OK就行。 ? 2.嵌入式系统的架构设计重要性 说一个小故事。...6.编译脚本的设计(构建工具) 当我们接到一个嵌入式项目时,在确定方案之后,程序运行的平台都是确定的,大部分情况就是嵌入式Linux,或者是一些变体。
文章目录 Linux嵌入式开发——连接文件 ln命令 硬连接 符号连接(软连接) Linux嵌入式开发——连接文件 Linux有两种连接文件:第一种叫符号连接也称为软连接,第二种就是硬链接。...--verbose # 列出每个链接的文件名称 --help # 显示此帮助信息并退出 --version # 显示版本信息并退出 我们主要需要注意的就是下面这两个命令
文章目录 Linux嵌入式开发——文件权限 文件权限 文件权限管理 修改文件权限 修改文件所属用户 拥有者 拥有者组 Linux嵌入式开发——文件权限 文件权限 文件权限是指不同的用户或用户组对某个文件拥有的权限
2.2.4 配置网络 重点来了,以前我们在VMware中使用桥接,这需要保证Windows、Ubuntu、开发板三者互通,而很多人的电脑有多个网卡,这涉及的网络设置太复杂了。...2.2.4.2 设置NAT网络的端口映射 在NAT网络下,外面的设备无法看到Ubuntu,要想开发板能访问到Ubuntu,需要进行端口映射。 先关闭Ubuntu,再关闭VMware,才能设置。...我们需要映射这几个端口:22(ssh端口)、111(rpc端口)、2049(nfs端口)、9999(mountd端口)。这样,开发板访问Windows的这些端口时,才可以访问到Ubuntu。...注意:你可能突然碰到网络问题,可能是Ubuntu的ip变了,这就需要修改端口映射中的虚拟机IP。如下图所示: ? 修改好后,再去测试网络。...2.2.4.3 修改Ubuntu的mountd端口 在NAT网络下,要想开发板能通过NFS挂载Ubuntu,需要修改mountd端口为9999 如果你还不会用vi命令,可以在Ubuntu桌面启动终端,
文章目录 Linux嵌入式开发——shell脚本 一、shell脚本基本原则 二、shell脚本语法 2.1、编写shell脚本 2.2、交互式shell脚本 2.3、shell脚本的数值计算 2.4、...判断符 2.6、默认变量 三、shell脚本条件判断 if then if then else case 四、shell脚本函数 不带参数 带参数 五、shell循环 while until for Linux...嵌入式开发——shell脚本 经过我们前面的学习,我们已经能够在终端中输入命令来完成一些常用的操作,但是都是一条一条地输入命令,如果需要执行的命令一旦多起来,就会很麻烦。...shell脚本提供数组、循环、条件判断的等功能,一般是Linux运维或者系统管理员要掌握的,但作为嵌入式开发人员,我们只需要掌握shell脚本最基础的部分即可。
文章目录 Linux嵌入式开发——C编程 一、编写C程序 1.1、设置vim编辑器 1.2、编写C程序 二、编译C程序 三、make工具和Makefile文件 3.1、编写C程序 C文件 H文件 3.2...、不使用make工具 3.3、使用make工具和Makefile文件编译 Linux嵌入式开发——C编程 一、编写C程序 我们目前就是使用VIM编辑器编写程序,当然,也可以使用vscode,但是vscode...1.1、设置vim编辑器 首先我们需要设置vim编辑器的一个TAB=4个字节,来使得与我们的编程习惯相类似。...然后设置vim编译器显示行号,便于我们观察,只需要在刚刚的文件后面再加上set nu即可。...(具体语法后面会介绍) # 要得到main目标,需要main.o input.o calcu.o,需要执行 # gcc -o main main.o input.o calcu.o命令,后面的都是这样的
搭建开发环境的主要工作是:安装虚拟机、安装Windows开发工具。 学习嵌入式Linux时,各种程序比如Linux内核、你编写的驱动、应用,都需要在Linux机器下编译。...正所谓在Windows下生活,在Linux下工作。难道我们需要2台电脑,一台装Windows、另一台装Linux?不,我们可以用虚拟机。在Windows电脑上安装虚拟机,在虚拟机里安装Linux。...无论是VMware还是Docker,都可以满足嵌入式Linux的学习与工作。...你不需要同时看VMware和Docker的章节,选择其中一个就可以。 2.1.2 安装Windows软件 选择、安装好虚拟机后,就要在Windows安装各种开发软件了。...软件名 说明 Source insight 阅读、编写源码的工具,即装即用;推荐初学者使用 Visual Studio Code 阅读、编写源码的工具,需要进行很多配置;不推荐初学者使用 MobaXterm
目录信息查看——ls ls -a 显示目录所有文件及文件夹,包括隐藏文件,比如以.开头的,一般在我们创建新文件夹或者删除文件夹的时候,都需要看一眼。...切换用户身份——sudo 这个主要用来切换身份,因为我们有些操作需要root权限来运行,就像windows里面的管理员权限一样。...gedit a.c 当前的系统进程查看——ps 这个用来查看系统进程,在嵌入式开发比较常用。...top 文件类型查看——file 就是用来查看文件类型,在嵌入式用的蛮多。 file a.c
Yocto :一个开源协作项目,提供模板、工具和方法,帮助您为嵌入式产品创建定制的基于 Linux 的系统,而不管硬件架构如何。...Yocto 开发人员的开发工作站往往是大型系统。不建议使用小型笔记本电脑。Yocto有一个内置的缓存机制,当它确定用于构建特定包的参数没有改变时,它允许它重新使用先前构建的组件。...其实我想吐槽,他的构建很耗资源,对电脑的性能要求很高,他会把电脑的资源全部耗尽,一个编译下来,基本半天到一天的时间。编译效率低。...《Buildroot》 Buildroot是我学习的第一个构建嵌入式系统的方式。 Buildroot:通过交叉编译生成嵌入式 Linux 系统的简单、高效且易于使用的工具。...核心构建系统用 Make 编写,并且足够短以便开发人员了解整个系统,同时可扩展到足以满足嵌入式Linux 开发人员的需求。Buildroot 核心通常只处理常见用例,但它可以通过脚本进行扩展。
前言 嵌入式知识点复习一 嵌入式知识点复习二 –体系结构 嵌入式知识点复习三 –ARM-LINUX嵌入式开发环境 嵌入式知识点复习四 –arm-linux文件编程 嵌入式知识点复习五 –arm-linux...进程编程 嵌入式知识点复习六 –arm-linux网络编程 嵌入式知识点复习七 –linux字符型设备驱动初步 嵌入式知识点复习一 1、 嵌入式系统的一般组成结构 2、嵌入式硬件系统的结构 (1)嵌入式处理器...嵌入式知识点复习三 –ARM-LINUX嵌入式开发环境 一、交叉开发模式 1、组成结构 (1)宿主机:开发主机,一般由PC、发行版linux系统、开发工具(本地及交叉编译)(代码编辑器Vi,编译器GCC...(2)不同点: ① 编译工具链一般用于本机编译、本机执行的开发模式; ② 交叉编译工具链用于宿主机编译,目标机运行的交叉开发模式; ③ 编译器一般Linux发行版都配备,直接调用gcc命令即可;...⑤ 实验室使用的OK6410开发板定制的编译器为32位的,其交叉编译工具链主要arm-linux-gcc,arm-linux-g++arm-linux-gdb等构成。
文章目录 Linux嵌入式开发——Makefile基本语法 一、Makefile 规则格式 二、Makefile 变量 2.1、赋值符“=” 2.2、赋值符“:=” 2.3、赋值符“?...=” 2.4、变量追加“+=” 三、Makefile 模式规则 四、Makefile 自动化变量 五、Makefile 伪目标 Linux嵌入式开发——Makefile基本语法 接下来我们来详细介绍一下基本的...其次就是依赖文件集合,就相当于,我们要完成这个目标所需要依赖什么。比如“写读书笔记”这个事情,就需要依赖于“笔”,“书”,“书桌”等等。...# 要得到main目标,需要main.o input.o calcu.o,需要执行 # gcc -o main main.o input.o calcu.o命令,后面的都是这样的。...所以我们需要定义一下伪命令,具体语法如下所示: .PHONY : clean 接下来。
但是,电脑用久了,终究会变慢,尤其是在Windows系统功能越来愈多,越来越大的情况下,我们还是需要换电脑! 不过,你的旧电脑怎么办? 卖掉?它的价格分分钟还不如废铁。 扔掉?又不太舍得。...相比Windows,旧电脑安装轻量级Linux 发行版会更加合适,因为运行足够快,操作足够流畅,功能也能满足基本需求!...而轻量级Linux 发行版也有很多选择,下面大白菜就介绍其中一款:Bodhi Linux系统,小巧强悍,运行更流畅!...Bodhi Linux是基于Ubuntu的轻量级发行版,研发者志在提供最小的基本系统,因此选择搭载了Moksha的窗口管理器(基于 Enlightenment),让使用者可以自行选择需要的软件。...而且说起来,你可能不相信,整个Bodhi Linux 的ISO镜像文件,仅仅740 MB大小,即使是在512 MB内存的旧电脑上安装使用,也同样流畅。
1.2.1 嵌入式 Linux 开发有哪些内容? 嵌入式 Linux 系统,就相当于一套完整的 PC 软件系统。 ? Windows 为例: ① 电脑一开机,那些界面是谁显示的?...同样的,嵌入式 Linux 系统中我们也有各种 APP,它们位于根文件系统上。...Bootloader、Linux 内核、APP 等等软件,需要在 Ubuntu 中编译;但是阅读、修改这些源码时,在 Windows下会比较方便。...在整个开发过程中,我们会用到 Windows、Ubuntu、开发板,如下图所示: ? 1.2.3 搭建开发环境需要做哪些事情 这里只是列出要做的事情,后面会一一讲到。...连接开发板 ① 连接电源线到开发板, ② 开发板的串口线,接到 Windows 电脑;并用 MobaXterm 连接串口。
Linux系统开发完全手册 第二版 2.1 安装Windows软件 2.1.1 这么多虚拟机,如何选择?...搭建开发环境的主要工作是:安装虚拟机、安装Windows开发工具。 学习嵌入式Linux时,各种程序比如Linux内核、你编写的驱动、应用,都需要在Linux机器下编译。...正所谓在Windows下生活,在Linux下工作。难道我们需要2台电脑,一台装Windows、另一台装Linux?不,我们可以用虚拟机。在Windows电脑上安装虚拟机,在虚拟机里安装Linux。...无论是VMware还是Docker,都可以满足嵌入式Linux的学习与工作。...你不需要同时看VMware和Docker的章节,选择其中一个就可以。 2.1.2 安装Windows软件 选择、安装好虚拟机后,就要在Windows安装各种开发软件了。
后来想玩一下kali-Linux,这下就是安装三个系统了,我本以为不是很困难,但还是遇到了很多问题,解决之后分享如下: 0x001 首先是启动盘的制作问题,我一开始选择的是制作Ubuntu启动盘用的软碟通...图片来自互联网)所示: 上网搜索之后我换了一个启动盘制作工具,Win32 Disk Imager,重新制作成功(如不成功可以尝试换一个usb接口等这类方式,不保证有用),其实用Linux...发现有点奇怪),无论如何出了问题就得解决,在BOOT界面进入windows,使用DiskGenius查看一下分区的情况,其中EFI引导程序如图: 其中MSR是微软的引导分区,在分区软件下无法读取,我们也不需要管他
嵌入式Linux驱动开发——汇编点灯 本文章开始记录学习嵌入式Linux的过程,使用的开发板是正点原子的阿尔法,以及左老师的书籍和视频。...然后这个系列不会介绍基础知识(书上都有),主要是记录思考过程以及需要注意的点。...arm-linux-gnueabihf-ld -Ttext 0X87800000 led.o -o led.elf: arm-linux-gnueabihf-ld:使用arm-linux-gnueabihf...arm-linux-gnueabihf-objdump -D led.elf > led.dis: arm-linux-gnueabihf-objdump:使用arm-linux-gnueabihf...kali@ubuntu:~/linux/driver/01_leds$ arm-linux-gnueabihf-gcc -g -c led.s -o led.o kali@ubuntu:~/linux/
那么就有好多同学问,学习嵌入式对电脑的要求高吗,如何选择适合嵌入式开发的电脑呢? 君玉善其事,必先利其器,这里就简单说下学习嵌入式电脑的选择。...选择什么样的电脑首先你要确认你学的嵌入式方向是什么,如果是8位,16位的单片机,那么目前市场上任何一台电脑都可以满足你的需要,包括笔记本和台式PC。那么如果你准备学习android底层开发等。...那么久需要有强劲的电脑了。因为android是一个相当大的工程,单纯一次完整编译就需要好久,如果你选择一台4G内存,2核CPU的电脑,那么很不幸,编译一次你至少要等待6小时以上。...另外,从经验来看,一般8位,16位的单片机都是入门,最后都会使用更高级的arm等嵌入式芯片,所以,在有条件的情况下,可以适当的选择高配一点电脑,选择大容量内存是非常重要的。...最后,嵌入式开发一般都需要使用串口,如果是台式机一般还保留串口,笔记本的话可以买一个usb转串口的小板,也很方便。
FreeType库是高度模块化的程序库,虽然它是使用ANSI C开发,但是采用面向对象的思想,因此,FreeType的用户可以灵活地对它进行裁剪。...在编译调用freetype库函数的源程序时,需要指定库文件。...比如:[wbyq@wbyq lcd_freetype]$ arm-linux-gcc freetype.c -lfreetype 2.3 windows电脑上的矢量字体存放目录 2.4 示例代码 #...在指定位置显示文本*/ /* wcslen() 函数用于计算宽字符的个数,支持区分中文和英文字符,文本需要在UTF-8编码下。...驱动开发"); /*7.
领取专属 10元无门槛券
手把手带您无忧上云