Linux 开发路线

Linux  开发路线:

使用 linux—linxu 系统编程开发---〉驱动开发和分析 linux 内核

开始学 linux 内核:最好有三件宝物:《深入理解 linux 内核》《LINUX内核源代码情景分析》和源代码。  《深》是纲,《情》是目。最后深入代码

Linux 内核原理:比较浅显的《linux 内核设计与实现》;比较深入的《深入理解 linux 内核》;《Linux内核设计的艺术

潜入时两个要点:CPU和操作系统


进入Linux开发殿堂的两个台阶: 

  1. 嵌入式基本C程序开发及调试方法 
  2. 基本驱动的概念和开发调试方法 


mount到开发板:(开发板可以多次mount多个宿主机的目录)

假设宿主机的IP192.168.1.12;在开发板上输入以下命令,将宿主机器的根目录mount到开发板上mnt目录

mount -o nolock 192.168.1.12:/  /mnt

执行:

cd /mnt

./iSmartAlarm


ARMLINUX不同于uClinux,因为启动了MMU,所以应用程序不能直接 读写物理地址(包括CPU寄存器<GPIO端口、中断等CPU内部资源> MEMORY、外设芯片内部寄存器等),而必须借助与驱动的形式,切入 内核用ioremap来实现对这些物理地址的访问。

 

LINUX下的驱动有两种形式

  1. MODULES形式的可动态加载的驱动(这是LINUX内核一个非常重要 的特点),我们测试用建议都用这种形式的,因为它调试就和普通应用程序一样,可以通过NFS mount的方式来调试,非常方便。 
  2. 静态编译到内核里面的驱动

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/383378.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

堆的应用(堆排序,TopK问题)

堆的应用 1&#xff09;排序 堆排序 选择排序 既可以找到最大的放在最后 也可以找到最小的方最前 但是&#xff0c;堆排序不能找最小的放在最前 因为把最小数放在最前&#xff0c;会破坏掉堆的原来的顺序&#xff0c;除非重新建堆 1&#xff0c; 2&#xff0c;9&#xff0c…

有名管道和无名管道的区别

1&#xff09;无名管道:管道是半双工的&#xff0c;数据只能向一个方向流动&#xff1b;需要双方通信时&#xff0c;需要建立起两个管道&#xff1b;只能用于父子进程或者兄弟进程之间&#xff08;具有亲缘关系的进程&#xff09;。 单独构成一种独立的文件系统&#xff1a;管道…

网络基础4(TCP三次握手,四次握手,TCP流量控制,TCP状态转换 , TCP异常断开,设置TCP属性,端口复用)

TCP协议 TCP通信时序 下图是一次TCP通讯的时序图。TCP连接建立断开。包含大家熟知的三次握手和四次握手。 TCP通讯时序 在这个例子中&#xff0c;首先客户端主动发起连接、发送请求&#xff0c;然后服务器端响应请求&#xff0c;然后客户端主动关闭连接。 两条竖线表示通讯的…

linux编程手册读书笔记第一章(20140329)

&#xff08;2&#xff09;管道、FIFO、套接字、设备&#xff08;比如终端、伪终端&#xff09;都支持非阻塞模式。&#xff08;因为无法通过open&#xff08;&#xff09;来获取管道和套接字的文件描述符。所以要启用非阻塞标志&#xff0c;就必须使用fcntl&#xff08;&#…

排序(基本概念及分类,直接插入排序和希尔排序)

排序的概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录&#xff0c;若经过排序&a…

Linux编程手册读书笔记第二章(20140330)

内核&#xff1a;管理和分配计算机资源&#xff08;即CPU、RAM和设备&#xff09;的核心软件层Linux内核可执行文件采用&#xff0f;boot&#xff0f;vmlinuz或类似的路径名&#xff0c;“z”表明内核是经过压缩的可执行文件。内核主要任务&#xff1a; &#xff08;1&#xff…

直接交换排序

直接交换排序 缺点&#xff1a;进行一些重复性比较&#xff0c;解决放法&#xff1a;堆排序 选择排序优化 //如果当前的数大于假定最大的数 //改变下标 //如果当前的数小于假定最小的数 //改变下标 //遍历数组跳到下一个元素 //如果最大的数没有在它的位置上 //交换 //交换…

Linux编程手册读书笔记第三章(20140407)

外壳函数执行一条中断机器指令&#xff08;int 0x80&#xff09;&#xff0c;引发处理器从用户态切换到核心态&#xff0c;并执行系统中断0x80的中断矢量所指向的代码。&#xff08;在2.6内核及glib 2.3.2之后的版本都支持sysenter指令&#xff0c;进入内核的速度更快&#xff…

Linux编程手册读书笔记第四章(20140407)

标准文件描述符定义在<unistd.h>中&#xff0c;STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO打开一个文件&#xff1a;open&#xff08;&#xff09; &#xff03;include<sys/stat.h> #include<fcntl.h> int open(const char *pathname, int flags, …/* …

快速排序概念及实现

快速排序 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法&#xff0c; 其基本思想为&#xff1a; 任取待排序元素序列中的某元素作为基准值&#xff0c;按照该排序码将待排序集合分割成两子序列&#xff0c;左子序列中所有元素均小于基准值&#xff0c;右子序列…

Linux编程手册读书笔记第五章(20140408)

改变已打开文件性质&#xff1a;fcntl&#xff08;&#xff09; #include<fcntl.h> int fcntl(int fd, int cmd, …); (1) 调用失败返回&#xff0d;1 &#xff08;2&#xff09;fcntl函数有5种功能&#xff1a; a. 复制一个现有的描述符&#xff08;cmd&#xff1d;F_D…

归并排序概念及其实现

基本思想&#xff1a; 归并排序&#xff08;MERGE-SORT&#xff09;是建立在归并操作上的一种有效的排序算法,该算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一个非常典型的应用。将已有序的子序列合并&#xff0c;得到完全有序的序列&#xff1b;即先使每个…

##连接符和#符的使用

C语言中如何使用宏C&#xff08;和C&#xff09;中的宏&#xff08;Macro&#xff09;属于编译器预处理的范畴&#xff0c;属于编译期概念&#xff08;而非运行期概念&#xff09;。下面对常遇到的宏的使用问题做了简单总结。 关于#和## 在C语言的宏中&#xff0c;#的功能是将其…

计数排序和基数排序

适用于数据集中在某个范围中&#xff0c; //统计每个数据出现的次数 计数排序&#xff1a;鸽巢原理 1找范围 2给空间 3记次数 4回收 for(int i 0;i<size; i) {temp[array[i]]; }for(int i0;i<range;i&#xff09;{while(temp[i])array[index]i;}代码实现 时间复杂度&…

信号量sem_wait()的使用

闲来无事&#xff0c;我给大家讲下UNIX/Linux下信号量函数的使用。首先你得知道什么叫信号量&#xff0c;什么时候要用信号量。这个嘛&#xff0c;主要就是用来保护共享资源的&#xff0c;也就是说如果你想限制某个&#xff08;些&#xff09;资源在同一时刻只能有一&#xff0…

C++起始(关键字,命名空间,缺省参数,函数重载(c语言为什么不支持函数重载))

1. C关键字(C98) 2. 命名空间 在C/C中&#xff0c;变量、函数和后面要学到的类都是大量存在的&#xff0c;这些变量、函数和类的名称将都存在于全局作用 域中&#xff0c;可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化&#xff0c;以避免命名冲突或名字污…

va_list和vsnprintf、getopt

原理解释&#xff1a; VA_LIST 是在C语言中解决变参问题的一组宏&#xff0c;在<stdarg.h>头文件下。 VA_LIST的用法&#xff1a; &#xff08;1&#xff09;首先在函数里定义一具VA_LIST型的变量&#xff0c;这个变量是指向参数的指针 &#xff08;2&a…

GitHub相关

git是一个版本控制工具. 主要解决三个问题 代码被喵星人吃掉了.产品经理反复修改需求, 需要同时维护多个版本代码.多人协同开发. 安装 git for windows 这个是一个git的windows系统的命令行版本 https://git-scm.com/downloads 下载会很慢很慢 使用 Github 创建项目 注册…

linux中bin与sbin目录的作用及区别介绍

在linux系统中&#xff0c;有两个重要的目录&#xff1a;bin与sbin&#xff0c;分别包括/bin、/usr/bin/与/sbin、/usr/sbin/。 bin: bin为binary的简写&#xff0c;主要放置系统的必备执行文件&#xff0c;例如: cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、m…

c++起始(名词修饰,extern “C” ,引用)

名字修饰(name Mangling) 在C/C中&#xff0c;一个程序要运行起来&#xff0c;需要经历以下几个阶段&#xff1a;预处理、编译、汇编、链接。 Name Mangling是一种在编译过程中&#xff0c;将函数、变量的名称重新改编的机制&#xff0c;简单来说就是编译器为了区分各 个函数…