C语言版的Protobuf库,所以需要使用到Protobuf和Protobuf-C。...在Ubuntu系统下载和编译Protobuf、Protobuf-C源码,将编译好的库和文件拷贝到SoC APP应用工程中,修改makefile文件和相关配置,直接使用。 这里我们使用第二种方式。...如果不需要使用指定版本的Protobuf,可以使用git指令下载库: git clone https://github.com/protocolbuffers/protobuf.git 3、安装protobuf-c...=$PWD/tmp_out: 配置编译环境,指定目标架构为 arm-linux-gnueabihf,并使用指定的交叉编译器进行编译。...如果不是ARM SoC使用,只是Ubuntu系统使用,配置编译环境就无需指定交叉编译工具链,指令如下: .
嵌入式Linux开发主要有四种方式:裸机开发、SDK开发、驱动开发和应用开发。 1、裸机开发 裸机开发通常指在没有操作系统支持的环境中直接在硬件上运行程序的开发。...在嵌入式Linux SDK开发中,开发者可以利用Linux系统的强大功能和灵活性,同时针对特定的硬件平台进行优化和调整,以满足嵌入式设备的特定需求。...3、驱动开发 驱动开发是指为嵌入式Linux系统编写设备驱动程序的过程。在这个过程中,开发者需要深入理解Linux内核架构,学会如何在Linux内核环境下编写、调试和维护设备驱动程序。...数据传输方式:数据通常以字节流的形式逐个传输,不涉及缓存区的使用。 应用实例:键盘驱动、串口驱动、声卡驱动等。...数据传输方式:数据传输是以块(通常是固定大小)为单位进行的,使用缓存区来提高数据处理效率。 应用实例:硬盘驱动、SSD驱动、光盘驱动等。
和单片机开发一样,在Linux中,C语言程序的执行通常从main函数开始。main函数是程序的入口点,当程序启动时,操作系统会调用main函数来执行程序的主要逻辑。...不同于单片机开发,通常设置main函数没有参数,Linux开发中main函数有两种形式:一种是不带参数,另一种是带参数。无论使用哪种形式,都需要返回一个整数值,通常用于表示程序的退出状态。...以下是关于main函数的一些基本使用方法: #include // 主函数的声明,可以有两种形式 // 1....以下是一个简单的示例,展示了如何在C程序中获取和使用这些参数: #include int main(int argc, char *argv[]) { // Print the
1.引言 Server一般有两种含义,一种是表示硬件,通常是指那些具有较高计算能力,能够提供给多个用户使用的计算机。...嵌入式WebServer,是在嵌入式系统上运行的,可以通过浏览器去访问,对硬件要求会低一点。我们常用的家用路由器,就是一个典型的应用,通过Web界面直接进行访问和配置设备,非常便利。...嵌入式WebServer有很多中,比如BOA、shttpd、lighttpd、goahead、appweb和apache等。...使用配置文件的方式如下: 使用 vi 打开 thttpd.conf 文件,并进行修改,我们将chroot注释掉,同时将“user=httpd”改为“user=root” dir=/home/httpd/...然后arm-linux-gcc test.c -o test.cgi就行了,如果编出来的test没有可执行权限,需要执行chmod +x test.cgi,然后将此文件放到服务器的根目录,如前面例子所示的
1 引言 随着物联网的蓬勃发展,WIFI被广泛的应用在各种嵌入式系统中。WIFI一般有两种工作模式,一个是工作在AP模式下,另外一个是Station模式。...本篇以Realtek USB接口的RTL8188 WIFI模块为例,对Linux下WIFI使用做个简单总结,希望对大家有所帮助。...6)交叉工具链arm_linux_4.8.tar.gz,还是之前使用的不变 7)上一节我们把Vmvare虚拟机网络模式做了改动,这里我们要改回去,如果是虚拟机开启的情况下修改的,改完后要重启下虚拟机。...4 Buildroot配置 • Wireless tools 配置 Wireless tools for Linux是一个Linux命令行工具包,用来设置支持Linux Wireless Extension...7 结束语 本篇为大家介绍了Linux下wifi接口的简单使用,大家有什么经验欢迎多分享交流,可以在网页下方留言讨论,或者发邮件:Topsemic@sina.com ,微信公众号如下,欢迎关注: 本期相关的资料在链接
1、Linux库函数简介 Linux 提供了丰富的库函数,涵盖了各种领域,从文件操作到网络编程、图形界面、数学运算等。...这些库函数大多数都是标准的 C 库函数,同时也包括一些特定于 Linux 系统的库。 Linux库函数通常以动态库文件(.so)的形式提供,存放在根文件系统的 /lib 目录下。...Linux 内核提供了一系列系统调用供应用层使用,直接使用系统调用是一种方法。然而,有些系统调用使用起来不够方便,因此引入了 C 语言库。...尽管从实现者的角度来看,系统调用与库函数存在根本的区别,但从用户使用的角度来看,这些区别并不重要。对于应用编程者来说,它们都是 C 语言函数。在实际应用编程中,库函数和系统调用都会被使用。...2、标准C语言库函数 在Linux系统下,使用的C语言库主要是GNU C语言函数库,也被称为glibc。
生活中常见的一个使用CAN的地方是汽车OBD接口,它一般位于汽车方向盘的左下角,是一个16针的插座,其中里面就有一个CAN接口,可以用来查看汽车的刹车、转向、故障信息等。...本篇对Linux下CAN使用做个简单总结,希望对大家有所帮助。 ? 2 环境介绍 2.1.硬件 1) 网上的一个第三方做的NUC972开发板: ?...2.2.软件 1) Uboot继续使用之前文章用的,无需改动。 2) Kernel在上一篇基础上,要做一定的修改。 3) Rootfs在上一篇用Buildroot生成的基础上,要做一定的修改。...standard 11 bit, 1 = extended 29 bit) */ typedef__u32 canid_t ; #define CAN_MAX_DLEN 8 6 结束语 本篇为大家介绍了Linux.../TopSemic/NUC972_Linux 中 7 参考资料 1) https://blog.csdn.net/lybhit/article/details/78663347 2) https://blog.csdn.net
1.引言 在嵌入式系统应用中,大容量的数据存储是经常遇到的一个问题。常见的解决方案包括Flash存储芯片、SD卡和U盘。SD卡具有存储容量大、携带方便、插拔便捷的特点,所以经常出现在嵌入式设备中。...本篇介绍Linux下SD卡的使用,包括相关配置、SD卡的挂载等。 2.环境介绍 2.1.硬件 1) 网上的一个第三方做的NUC972开发板: ?...3) Rootfs使用上一篇的,不需要改动。 3.Uboot配置 Uboot的配置如下: 第一处是这里: ? 第二处是这里: ?...5.SD卡挂载 1) 首先通过#fdisk -l命令确认板子上的linux系统是否识别SD卡 下图中显示的15.6GB的设备对应的就是板子上插入的SD卡。 ?...6.结束语 本期相关的资料在https://github.com/TopSemic/NUC972_Linux Lesson16 SD卡使用中
2.3.3 使用Docker 使用Docker之前,请一定先看看前面的《概念介绍》,了解Docker的镜像、容器的概念。...启动完毕后,鲸鱼图标就不再喷水,你就可以使用Docker了。 2.3.3.2 设置Docker存储目录 ? 2.3.3.3 使用MobaXterm打开命令行 这不是必须的。...一个容器启动后,可以执行它里面的命令,使用以下命令进入容器,它的意思是执行ubuntu容器里的bash命令,i表示interactive(交互)、t表示tty(会打开一个交互终端): docker...2.3.4 常见问题 2.3.4.1 安装问题 Windows 10教育版、家庭版无法安装Docker,请使用VMware吧。...2.3.4.2 网络问题 如果Windows无法远程登录Ubuntu,使用Filezilla无法连接Ubuntu、开发板无法通过NFS挂载Ubuntu,那么很可能是防火墙的问题,或是端口被占用了。
在Windows使用VSCode搭建嵌入式Linux开发环境 百问网已经制作好了完备的Ubuntu镜像,可以从这里下载: 链接:https://pan.baidu.com/s/1vw4VUV_Mvt0HXz8IC66ACg...2.1.2 在本地安装插件 我们的目的是在Windows上运行vscode,使用vscode阅读Linux服务器上的内核源码。...Linux服务器上的clangd程序。...在Ubuntu中使用浏览器打开https://github.com/clangd/clangd/releases/tag/13.0.0,下载Linux安装包: 把下载到的clangd-linux-13.0.0...使用vscode阅读内核源码 确保Ubuntu上Linux内核源码目录下已经有了文件compile_commands.json。
简介 嵌入式Linux下串口编程与Linux系统下的编程没有什么区别,系统API都是一样的。...嵌入式设备中串口编程是很常用的,比如会对接一些传感器模块,这些模块大多是RS232或者RS485接口,对于软件层面上来说,RS232与RS48区别不大。...RS232与RS485在使用上的区别,RS232是全双工的,只能对接一个设备串口设备。RS485是半双工的总线协议,一般可以挂多个传感器设备,半双工的意思是同时只能有一个设备向串口发数据。...case 'o': case 'O': { new_cfg.c_cflag |= (PARODD | PARENB); //使用奇校验不是用偶校验...'E': { new_cfg.c_cflag |= PARENB; new_cfg.c_cflag &= ~PARODD; //使用偶校验
自己总结的Linux学习路线,还在这条路上继续奔跑着… 我将其总结为4个阶段吧: 入门 - 抛弃旧的思维习惯,熟练使用 Linux 命令行 从Window切换到Linux是一件很痛苦的事情,因为人类接受信息最快的方式就是图形化的信息...在这一阶段,推荐的书籍是《鸟哥的私房菜》、《linux shell脚本攻略》。 《鸟哥的私房菜》- 几乎每个linux程序的必经之路。...推荐的书籍有《Linux环境下C编程指南》、《UNIX 环境高级编程》。 linux驱动开发,学会基本的linux内核数据结构、接口等等,了解linux设备模型、设备树等,为理解内核打下坚实的基础。...linux内核源码解析,对每个子系统的代码架构深入研究,能对内核进行模块裁剪等。推荐的书籍有《Linux内核设计与实现》、《Linux内核源代码情景分析》和《深入理解Linux内核(第三版)》。...尤其是google搜索时,学会使用英文关键词非常重要。 一起努力吧。
ncurses库提供了一系列的函数以便使用者调用它们去生成基于文本的用户界面。...注:linux内核中一个功能模块有三种编译方法:一种是编入、一种去去除、一种是模块化。...*代表选中,空代表未选中; tristate:有三种状态,*代表选中,空代表未选中,M代表模块; string:( )存放十进制或者十六进制字符串; 2.mainmenu 如果配置程序选择了使用它...所以linux内核是高度可配置的,而且linux内核的所有配置项很难全部搞明白。...因为linux内核的配置项太多太繁杂超出了人的大脑能够记忆和处理的数量级,因此linux内核不像uboot那样直接手工配置,而是发明了一个图形化的配置工具menuconfig。”
https://weidongshan.tmall.com/(天猫) ---- 版本 日期 作者 说明 V1 2020 韦东山 技术文档 2.2.4 配置网络 重点来了,以前我们在VMware中使用桥接...现在我们使用NAT方式,这样会简单很多。...2.2.4.1 设置Ubuntu使用NAT网络 先关闭VMware中的Ubuntu,在VMware界面设置Ubuntu使用NAT,如下图: 然后启动Ubuntu,打开终端,执行ifconfig...先使用管理员身份运行“虚拟网络编辑器”,如下图所示: 注意:如果按上述方法找不到虚拟网络编辑器,请按如下方法打开: 然后,如下图设置端口映射: 设置好后,启动VMware、...工具修改: sudo gedit /etc/services 命令解释: ① 修改/etc/services: 添加2行: mountd 9999/tcp mountd 9999/udp 使用
空洞文件在实际应用中有两个典型场景: 1、在使用迅雷下载文件时,尚未完全下载时文件已经占据整个文件大小的空间,这就是空洞文件的应用。...2、在创建虚拟机时,如果一开始就分配了100GB的磁盘空间,而实际上系统安装完成后可能只使用了3、4GB的空间,这就是空洞文件的应用。...在 Linux 中,可以通过使用 lseek 和 write 系统调用来创建空洞文件。...\n"); return 0; } 在这个例子中,通过 lseek 将文件指针移动到第 1024 个字节处,然后使用 write 写入一个字节的数据。...可以使用 du 命令查看文件占用的磁盘空间,以验证是否为稀疏文件。例如: du -h sparse_file.txt 这将显示文件的磁盘使用情况,如果文件是空洞文件,它会显示实际使用的磁盘空间较小。
那么接下来在嵌入式linux之go语言开发实战中,也尝试用protobuf作为序列化和通信的协议格式。 之前想做个protobuf序列化的反向解析工具,但是发现反向解析工具,现成的就有啊。...(3)若需要使用的字段值出现负数,请使用sint32/sint64,不要使用int32/int64。...能否在嵌入式系统上供c使用protobuf? 也是可以的。...参照博文《protobuf在嵌入式linux下的移植及c语言调用https://blog.csdn.net/yyz_1987/article/details/81126877》 注:生成供go语言使用的源文件...在嵌入式linux上,执行看看效果,使用如下命令: GOOS=linux GOARCH=arm GOARM=7 go build main.go 即可生成可在嵌入式linux上执行的文件。
在Linux中,文件共享是指多个进程可以同时访问和操作同一个文件。...文件描述符复制: 通过多次调用open函数或使用dup()、dup2()函数,可以制造出多个不同的文件描述符,这些描述符指向同一个文件。...2、不同进程中分别使用 open 函数打开同一个文件 在Linux系统中,不同进程可以使用open函数打开同一个文件。...3、同一个进程中通过 dup(dup2)函数对文件描述符进行复制 在同一个进程中,可以使用dup函数或dup2函数来复制文件描述符。...接着,程序使用原始文件描述符 fd1 写入一些内容,再使用复制的文件描述符 fd2 写入另一些内容。由于它们指向同一个文件,两次写入的内容都会出现在文件中。
前言 嵌入式知识点复习一 嵌入式知识点复习二 –体系结构 嵌入式知识点复习三 –ARM-LINUX嵌入式开发环境 嵌入式知识点复习四 –arm-linux文件编程 嵌入式知识点复习五 –arm-linux...进程编程 嵌入式知识点复习六 –arm-linux网络编程 嵌入式知识点复习七 –linux字符型设备驱动初步 嵌入式知识点复习一 1、 嵌入式系统的一般组成结构 2、嵌入式硬件系统的结构 (1)嵌入式处理器...4、嵌入式操作系统 功能: 种类:嵌入式linux;WinCE;Vxworks;μC/OS-II;Android;IOS。...嵌入式知识点复习三 –ARM-LINUX嵌入式开发环境 一、交叉开发模式 1、组成结构 (1)宿主机:开发主机,一般由PC、发行版linux系统、开发工具(本地及交叉编译)(代码编辑器Vi,编译器GCC...⑤ 实验室使用的OK6410开发板定制的编译器为32位的,其交叉编译工具链主要arm-linux-gcc,arm-linux-g++arm-linux-gdb等构成。
在Linux系统中,系统文件和目录按照一定的约定被组织和分配到不同的位置。这些文件和目录通常用于存储系统配置、程序文件、库文件等。.../dev:包含设备文件,Linux中一切皆文件,这里存放了与设备通信的特殊文件,如硬盘分区(/dev/sda1)、键盘(/dev/input/eventX)等。...但是我们在使用SoC开发时,看到的系统文件目录和桌面系统(以Ubuntu为例)中并不一样,这取决于嵌入式系统的特定需求和设计。...引导和启动过程 嵌入式系统的引导和启动过程可能与桌面系统不同,可能会使用不同的引导加载程序(Bootloader)和启动方式,因此文件系统的布局可能会根据这些差异进行调整。...硬件特性 嵌入式系统可能使用不同的硬件平台和架构,如ARM、MIPS等。因此,文件系统的组织方式可能会受到硬件特性的影响。
参考链接 RTSP视频流处理方法 这里使用Gstreamer + OpenCV来处理RTSP视频流,因此对Gstreamer进行调查。 1....一个典型的数据源元件的例子是音频捕获单元,它负责从声卡读取原始的音频数据,然后作为数据源提供给其它模块使用。...一个典型的过滤器元件的例子是音频编码单元,它首先从外界获得音频数据,然后根据特定的压缩算法对其进行编码,最后再将编码后的结果提供给其它模块使用。...3. gstreamer tools Gstreamer自带了gst-inspect-1.0和gst-launch-1.0等其他命令行工具,我们可以使用这些工具完成常见的处理任务。...Description transfer data via RTSP Filename /usr/lib/aarch64-linux-gnu/
领取专属 10元无门槛券
手把手带您无忧上云