
嵌入式-linux
嵌入式-linux开发环境搭建驱动应用编程
众里寻佳千百度1995
嵌入式软件开发,c语言,c++,linux,qt
展开
-
pid算法控制
(一)先来彻底搞懂PID到底是啥?啥是PID?PID,就是“比例(proportional)、积分(integral)、微分(derivative)”,是一种很常见的控制算法。在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节。它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。算法是不可以吃的。PID已经有107年的历史了。它并不是什么很神圣的东西,大家一定都见过PID的实际应用。比如四轴飞行器,再比如平衡小车..原创 2020-09-23 13:36:30 · 2721 阅读 · 0 评论 -
C语言面试常见问题总结
一、列举一个指针跑飞的例子:1、 意外中断。是否打开了某个中断,但是没有响应和清除中端标志,导致程序一直进入中断,造成死机假象。2. 中断变量处理不妥。若定义某些会在中断中修改的全局变量,这时要注意两个问题:首先为了防止编译器优化中断变量,要在这些变量定义时前加volatile,其次在主循环中读取中断变量前应该首先关闭全局中断,防止读到一半被中断给修改了,读完之后再打开全局中断;否则出现造成数据乱套。3. 地址溢出,常见错误为指针操作错误。我要着重说的是数组下标使用循环函数中循环变量,如果循环变原创 2020-09-13 23:39:43 · 18806 阅读 · 0 评论 -
C语言面试常见问题总结--单片机的启动过程(从上电到main)
1原创 2020-09-13 23:09:56 · 686 阅读 · 1 评论 -
C语言面试常见问题总结---线程间通信的三种方法
多线程通信的方法主要有以下三种:1.全局变量进程中的线程间内存共享,这是比较常用的通信方式和交互方式。注:定义全局变量时最好使用volatile来定义,以防编译器对此变量进行优化。Linux系统中的线程间通信方式主要以下几种:*锁机制:包括互斥锁、条件变量、读写锁和自旋锁。互斥锁确保同一时间只能有一个线程访问共享资源。当锁被占用时试图对其加锁的线程都进入阻塞状态(释放CPU资源使其由运行状态进入等待状态)。当锁释放时哪个等待线程能获得该锁取决于内核的调度。读写锁当以写...原创 2020-09-13 23:03:05 · 6171 阅读 · 0 评论 -
C语言面试常见问题总结-----静态库与动态库
这次分享的宗旨是——让大家学会创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择。这里不深入介绍静态库、动态库的底层格式,内存布局等.推荐一本书《程序员的自我修养——链接、装载与库》1、一个程序从源文件编译生成可执行文件的步骤:预编译 --> 编译 --> 汇编 --> 链接(1)预编译,即预处理,主要处理在源代码文件中以“#”开始的预编译指令,如宏展开、处理条件编译指令、处理#include指令等。(2)编译过程就是把预处理完的文件进行一系..原创 2020-09-13 22:53:42 · 541 阅读 · 0 评论 -
C语言面试常见问题总结--程序的5种内存存储区及示意
操作系统中的内存一般分为虚拟内存和物理内存,本文主要讨论的是虚拟内存中的内存分配方式与内存存储区的内容。APUE中的一个典型C内存空间分布图Linux下32位环境的用户空间内存分布情况内存分配方式C/C++主要有以下五种内存存储区:1)、静态区(全局数据区):存全局变量,静态变量。程序编译时内存已分配好,并存在于程序整个运行期间,程序结束后由系统统一释放全局变量和静态变量被分配到同一块内存中。全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域(da..原创 2020-09-13 18:40:31 · 1099 阅读 · 0 评论 -
C语言面试常见问题总结--static
1、先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容char a = 'A'; // global variablevoid msg(){ printf("Hello\n");}下面是main.c的内容 extern char a; // extern variable must...原创 2020-09-13 17:35:30 · 388 阅读 · 0 评论 -
C语言面试常见问题总结--虚拟内存和物理内存
一、虚拟内存和物理内存操作系统有虚拟内存与物理内存的概念。在很久以前,还没有虚拟内存概念的时候,程序寻址用的都是物理地址。程序能寻址的范围是有限的,这取决于CPU的地址线条数。比如在32位平台下,寻址的范围是2^32也就是4G。并且这是固定的,如果没有虚拟内存,且每次开启一个进程都给4G的物理内存,就可能会出现很多问题:因为我的物理内存时有限的,当有多个进程要执行的时候,都要给4G内存,很显然你内存小一点,这很快就分配完了,于是没有得到分配资源的进程就只能等待。当一个进程执行完了以后,再将等待的原创 2020-09-13 17:34:07 · 506 阅读 · 0 评论 -
linux应用编程和网络编程学习笔记--3.1.linux中的文件IO
***********《朱有鹏老师嵌入式linux核心课程》 ***********《3.linux应用编程和网络编程-第1部分-3.1.linux中的文件IO》-------------------------------------------------------- 欢迎访问《朱老师物联网大讲堂》官方网站 www.zhulaoshi.org 以获取本课程更多信息---------------...原创 2020-09-13 11:16:16 · 449 阅读 · 0 评论 -
小学生都能看懂,彻底解决环境搭建难题,一步一截图,再无VMware网络难题
小学生都能看懂,彻底解决环境搭建难题,一步一截图,再无VMware网络难题原创韦东山百问科技1周前上周四我们预告了这周要发布环境搭建的终极解决方案,经过一周的努力,终于写好了文档,Ubuntu使用NAT方式, 彻底解决Ubuntu不能上网,开发板不能PING通Ubuntu的问题,同时还发布了占用资源更小,运行速度更快的Docker使用教程,全文1万字,预计阅读时间30分钟,可以先收藏再阅读,这都是韦东山老师通宵多晚调试搞定的教程,到底是怎么做到的呢?一起来瞧瞧...本文特点...原创 2020-05-29 16:27:38 · 1410 阅读 · 0 评论 -
linux下-编译多个文件-制作、使用动态库-静态库
1、怎么编译多个文件:① 一起编译、链接:gcc -o test main.c sub.c② 分开编译,统一链接:gcc -c -o main.o main.cgcc -c -o sub.o sub.cgcc -o test main.o sub.o2、制作、使用动态库制作、编译:gcc -c -o main.o main.cgcc -c -o sub.o sub.c...原创 2020-02-12 14:06:46 · 1620 阅读 · 0 评论 -
配置交叉编译工具链
设置交叉编译工具主要是设置 PATH, ARCH 和 CROSS_COMPILE 三个环境变量1)设置环境变量永久生效如需永久修改,请修改用户配置文件, Ubuntu 系统下,修改如下:vim ~/.bashrc在行尾添加或修改:export ARCH=armexport CROSS_COMPILE=arm-linux-gnueabihf-export PATH=$PATH...原创 2020-02-10 16:40:23 · 646 阅读 · 0 评论 -
linux-韦东山-书籍-学习笔记
1、ubuntu 目录Ubuntu 中,以树状结构表示文件夹与文件,没有盘符的概念。比如:/abc/def/hello.txt,这表示在根目录下有 abc 子目录,而 abc 下又有 def 目录;def 中有 hello.txt 文件。从名字“/abc/def/hello.txt”中你无法知道 hello.txt 文件位于磁盘哪一个分区注意:要想查看某个分区挂载在哪一个目录下,可以执...原创 2020-02-10 15:04:33 · 516 阅读 · 0 评论 -
嵌入式linux开发环境的构建
1、开发步骤:1)在主机上编译bootloader,然后通过jtag烧写到单板。2)在主机上编译嵌入式linux内核,通过bootloader烧写到单板。3)在主机上编译各类应用程序,单板启动内核后nfs运行他们,经过验证后再烧写到单板。2、主机要求:3、目标板要求:s3c2440:4、虚拟机和ubantu安装:具体见上博客l...原创 2020-02-06 15:32:09 · 1335 阅读 · 0 评论 -
什么是arm-arm体系架构版本(指令集版本)-arm内核版本
1、什么是arm?arm公司:是英国一家电子公司的名字,该公司成立于1990年11月,是苹果电脑,Acorn电脑集团和VLSI Technology的合资企业。Acorn曾在1985年推出世界上首个商用单芯片RISC(Reduced Instruction Set Computing)处理器。ARM主要出售芯片设计技术的授权。ARM处理器:英国Acorn有限公司设计的低功耗成本的第一款RI...原创 2020-02-06 11:05:30 · 5768 阅读 · 0 评论 -
linux学习笔记--虚拟机安装与设置
1、虚拟机安装:https://blog.youkuaiyun.com/qq_42372031/article/details/1005882452、调整虚拟机桌面分辨率右击桌面-->选择更换背景-->点击设备--->显示---->分辨率。3、网络设置联网:重启机器即可。...原创 2020-02-06 11:10:21 · 143 阅读 · 0 评论 -
【I.MX6UL试用体验】搭建交叉编译环境
今天开始玩开发板,熟悉imx6ul开发流程的各位都知道,imx6开发板一般是不自带编译环境即gcc软件包的,因为片上的flash存储空间太小了,所以,最常用的开发方法是虚拟机交叉编译+SSH登录+SFTP传输文件。 imx6ul是ARMv7架构,可以直接使用gcc-linaro的交叉编译链,大家可在官网下载:https://www.linaro.org/downloads/ ...原创 2020-02-12 10:15:10 · 907 阅读 · 0 评论