随笔分类 - 嵌入式
摘要:根文件系统 一个嵌入式Linux系统可以有多个文件系统,但必须有第一个文件系统,也就是根文件系统。系统启动后看到的目录和目录里面的文件就是文件系统。 建立根文件系统 1.创建目录 示例: mkdir rootfs cd rootfs mkdir bin dev etc lib mnt proc sb
阅读全文
摘要:Linux内核制作步骤 1.清除原有配置 make distclean 2.配置内核 选择一个已有的配置文件简化配置 make menuconfig ARCH=arm 3.编译内核 ARCH指明处理器架构,CROSS_COMPILE指明交叉工具链。在编译uImage会显示找不到mkImage工具。该
阅读全文
摘要:为什么要配置内核 基于硬件和软件的需求选出需要的功能,去掉不要的功能。 内核配置的方法 make config:基于文本交互的配置。 make menuconfig:基于图形菜单的配置。 make menuconfig配置方法 1.菜单项的分类 processor type and features
阅读全文
摘要:Linux系统架构 1.用户空间:应用程序、C函数库 2.内核空间:系统调用接口、内核、体系结构相关代码 Linux系统利用处理器不同的工作模式,使用其中的两个级别分别来运行Linux内核与应用程序,这样使操作系统本身得到了充分的保护。内核空间与用户空间是程序执行的两种不同的状态,通过系统调用和硬件
阅读全文
摘要:嵌入式软件层次 1.Bootloader 2.Linux内核 3.文件系统 编译U-Boot 1.解压uboot tar zxvf uboot.tar.gz 2.清除uboot make distclean 3.配置uboot make mini2440_config 4.编译uboot ARCH指
阅读全文
摘要:第1类 时间编程类 1.1 获取日历时间 1.1.1 函数名 time 1.1.2 函数原形 time_t time(time_t *t) 1.1.3 函数功能 返回日历时间 1.1.4 所属头文件 <time.h> 1.1.5 返回值 成功:日历时间失败:-1 1.1.6 参数说明 t:不为空的情
阅读全文
摘要:脚本定义 脚本就是一个包含一系列命令的文本文件。当运行这个脚本文件时,文件中包含的命令序列将得到自动执行。 脚本编程 1.基本结构 脚本由解析器和命令序列组成,#!/bin/bash指明了脚本由哪个解析器解析运行。创建脚本文件,并更改权限为可执行。注意:文本格式要转换为Unix格式。 2.变量 sh
阅读全文
摘要:守护进程 守护进程,也就是通常说的Daemon(精灵)进程,是Linux中的一种服务进程。例如smbd进程。它的特点是: 1.不占用控制终端(后台运行) 2.独立于控制终端 3.摆脱父进程影响 4.周期性处理任务 不占用控制终端 守护进程需要独立于任何一个控制终端,实现方法调用是通过创建子进程来充当
阅读全文
摘要:server.c #include <sys/socket.h> #include <netinet/in.h> #include <strings.h> #include <stdio.h> #include <unistd.h> #include <stdlib.h> #define SERVE
阅读全文
摘要:server.c #include <sys/socket.h> #include <netinet/in.h> #include <strings.h> #include <stdio.h> #define SERVER_PORT 3333 void main(){ //创建标识 int serv
阅读全文
摘要:server.c #include <sys/socket.h> #include <netinet/in.h> #include <strings.h> #include <stdio.h> #define SERVER_PORT 3333 void main(){ //创建标识 int serv
阅读全文
摘要:编程模型 Socket的实质就是一个接口,利用该接口,用户在使用不同的网络协议时,操作函数得以统一。而针对不同协议的差异性操作,则交给了Socket去自行解决。 TCP编程模型 UDP编程模型
阅读全文
摘要:网络模型 OSI参考模型: 物理层、数据链路层 | 网络层 | 传输层 | 会话层、表示层、应用层 TCP/IP参考模型: 网络接口层 | 网络层 | 传输层 | 应用层 网络协议要素 1.协议规则 2.数据格式 协议架构 以太网协议格式 IP协议格式 TCP协议格式 UDP协议格式
阅读全文
摘要:线程同步 多个线程按照规定的顺序来执行,即为线程同步。 threadSync1.c #include <pthread.h> #include <stdio.h> #include <unistd.h> pthread_mutex_t mutex; int task = 0; void *threa
阅读全文
摘要:线程概念 1.线程就是轻量级的进程。 2.线程与创建它的进程共享代码段和数据段。 3.线程拥有自己独立的栈。 线程特点 线程可以和进程做相同或不同的工作,但是与进程共享资源。 线程互斥 在实际应用中,多个线程往往会访问同一个数据或资源,为避免线程之间相互影响,需要引入线程互斥机制,而互斥锁(mute
阅读全文
摘要:消息队列 消息队列就是一个消息的链表。而一条消息则可以看作一个记录,具有特定的格式。进程可以向中按照一定的规则添加新消息;另一些进程则可以从消息队列中读走消息。 消息格式 每一条消息都有固定的格式。格式如下: struct msgbuf { long mtype; /* message type,
阅读全文
摘要:共享内存 共享内存是IPC机制中的一种,它允许两个相关的进程访问同一段内存,这是传递数据的一种有效的方式。 A.c #include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h> #include <stdio.h> #include
阅读全文
摘要:进程同步 一组并发进程进行相互合作、相互等待,使得各进程按一定的顺序执行的过程称为进程间的同步。 进程同步与进程互斥 进程同步问题的关键在于生产者不需要获取信号量,消费者不需要释放信号量,所以信号量的初值设置为0。但是进程互斥问题中双方都需要获取和释放信号量,所以信号量的初值至少为1。 produc
阅读全文
摘要:信号量分类 1.二值信号量:信号量的值只能或0或1。 2.计数信号量:信号量的初始值大于1。 什么是键值 1.文件通过文件名来打开文件,从而得到文件的标示符;信号量通过键值来打开信号量,从而得到信号量的标示符。 2.在创建信号量的时候指定键值。 指定键值 1.选择任意数值 2.通过函数构造,例如:k
阅读全文
摘要:信号 在Linux系统中,信号(signal)是一种事件通知的进程通讯方式。 信号处理流程 1.进程A选择信号 2.进程A发送信号给进程B 3.进程B接收信号 信号类型 Linux系统支持的所有信号都定义在/usr/include/asm/signal.h中,其中常见的信号有: SIGKILL:杀死
阅读全文