嵌入式Linux系统编程
2024-01-05 15:40:44 2 举报
AI智能生成
登录查看完整内容
嵌入式Linux系统编程是指在嵌入式系统中使用Linux操作系统进行软件开发的过程。这种编程主要关注于开发实时、高效且稳定的应用程序,以满足特定硬件资源的需求。在嵌入式Linux系统编程中,开发人员需要熟悉Linux内核、设备驱动程序、文件系统、网络协议等关键组件。他们还需要了解如何根据特定硬件平台进行调整和优化,以保证应用程序能够在有限的资源条件下正常运行。常见的嵌入式Linux系统编程包括硬件初始化、设备驱动程序开发、系统服务定制、应用程序开发等。
作者其他创作
大纲/内容
奔腾
酷睿
Intel
AMD
IBM
国产龙芯
PC
高通 Qualcomm
联发科 MTK
Marvell
三星
华为海思
手机
CPU厂商
X86
X86-64(amd64)
CISC
ARM
MIPS
PowerPC
RISC
CPU架构
处理器
STC
C8051f120
Silicon Labs
51系列
STM32F103
STM32F407
STM32
ST 意法半导体
MSP430g2553
MSP430F5438
MSP430F5529
MSP430
TI 德州仪器
Arduino
AVR
ATMEL
K60
NXP 飞思卡尔
Renesas 瑞萨
MCU
USB
WiFi
Serial
ZigBee
Ethernet
Bluetooth
通信方式
SPI
I2C/I2S
UART
CAN(USBCAN)
通信协议
通信
博通 Broadcom
高通 Qualcomm
联发科 MTK
瑞昱 Realtek
无线芯片
EMMC
SSD
UFS
nand
nor
flash
RAM
存储
电子器件
温度传感器
湿度传感器
烟雾传感器
距离传感器
超声传感器
巡线传感器
光电传感器
红外发射/接收器
红外避障传感器
红外传感器
压力传感器
声音传感器
电子罗盘
三轴加速度计
霍尔传感器
传感器
硬件相关
FreeRTOS
VxWorks
RT-Thread
μC/OS-II
μClinux
实时操作系统
Ubuntu
OpenWrt
非实时操作系统
嵌入式系统
Windows
Debian
Centos
Red Hat
OpenSuSE
Arch
Kali
elementary OS
deepin
Linux
MAC OS
PC系统
Android
IOS
WindowsPhone
ubuntu
Symbian
Blackberry
Harmony
移动端系统
操作系统
802.11
HTTP/HTTPS
DHCP
DNS
SMTP
POP3
NTP
FTP
SSH
Telnet
应用层
TCP
UDP
QUIC
传输层
IP
ICMP
IGMP
网络层
ARP
PPP
链路层
TCP/IP模型
OSI模型
计算机网络
Http/Https
Samba
文件传输
Apache
Nginx
IIS
Tomcat
Lighttpd
WEB
PPPoE
PPTP
L2TP
IP分配
VPN
其它
常用服务器
SQL/NoSQL
JSON
XML
CSV
数据格式
MySQL
SQL Server
MongoDB
Redis
常用数据库
数据库
算法与数据结构
计算机知识
Git
Vim
Tmux
fzf
基本工具
TeraTerm
minicom
putty
终端
Postman
BurpSuite
发包工具
tcpdump
wireshark
抓包工具
ctags
cscope
Source Insight
代码追踪
printf
printk
GDB
strace
Valgrind
调试工具
cntlm
proxychain4
proxifier
Fiddler
网络代理工具
hping3
Hyenae
网络攻击测试工具
常用工具
沟通能力
百度脑图
ProcessOn
XMind
FreeMind
MindManager
思维导图
Gitbook
Onenote
Evernote
Visio
语雀
Hexo
Hugo
CSDN
知乎专栏
博客
Typora
VSCode
Markdown
总结&笔记
奇妙清单(可用于团队协作)
Todolist
计划清单
TeamViewer
AnyDesk
Skype
VNC
远程协作
软技能
sh
bash
oh my zsh
zsh
csh
shell
$PATH
$HOME
$USER
$PS1
常用变量
env
alias
shell环境
echo
打印输出
grep/egrep/fgrep
sed
awk
文本编辑
useradd
userdel
usermod
passwd
who
whoami
用户
groupadd
groupdel
groupmod
组
用户&组
date
sleep
时间
cd
pwd
touch
rm
mv
mkdir
rmdir
cp
ln
ls
常见操作
cat
less
more
tail
head
tee
查看
tree
wc
file
stat
size
strings
hexdump
objdump
信息
chown
chmod
chgrp
umask
权限
find
whereis
which
查找
truncate
cut
裁剪
dd
tar
zip/unzip
备份&压缩
md5sum
openssl
加密
文件系统
ps
pstree
pidof
top/htop
kill
killall
进程
fdisk
df
du
mount
umount
mkfs
磁盘
ifconfig
netstat
lsof
arp
nslookup
常用
nc
ping/ping6
arping
traceroute/traceroute6
测试
抓包
iperf3
tc
流量
route
ip route
路由
iwconfig
iwlist
iwpriv
无线
iptables
ebtables
防火墙
tftp
scp
wget
curl
下载传输
网络
id
hostname
sar
uptime
uname -a
sysctl
lsb_release -a
常用信息
lspci
lsusb
cat /proc/cpuinfo
硬件信息
lsmod
insmod
内核模块
dmesg
日志
系统
free
cat /proc/meminfo
cat /proc/slabinfo
内存
ssh
telnet
nandwrite
nanddump
nandtest
ubiattach
ubidetach
ubimkvol
ubinfo
ubinize
ubi
uci
swconfig
brctl
switch
硬件
常用指令
#!/bin/sh
文件头部
name=value
定义
$name
${name}
可以防止tab等字符被转换为空格
\"${name}\"
引用
# 删除变量左侧的最短匹配;## 删除变量左侧的最长匹配
% 删除变量右侧的最短匹配;%%删除变量右侧的最长匹配
语法
${file##*/} 以/为分隔符,删除最后一个/往左的所有字符
${file%/*} 以/为分隔符,删除最后一个/往右的所有字符
举例
分割
变量
$# 参数个数
$0 当前执行脚本的名称
$* 传递脚本的所有参数,加双引号时为一个字符串“$1 $2 ... $n”
$@ 传递脚本的所有参数,加双引号时为\"$1\" \"$2\" ... \"$n\"
$? 最后命令的退出状态
参数
+ - * / % = == !=
`expr 2 + 4`
算数运算符
-eq 值相等
-ne 值不相等
-gt 值大于
-lt 值小于
-ge 值大等于
-ne 值小等于
关系运算符
! 非运算
-o 或运算
-a 与运算
布尔运算符
&& 逻辑与
|| 逻辑或
逻辑运算符
= 字符串相等返回true
!= 字符串不相等返回true
-z 字符串长度为0返回true
-n 字符串长度不为0返回true
字符串运算符
-b 块设备文件检测
-c 字符设备文件检测
-d 文件目录检测
-f 普通文件检测
-r 文件可读检测
-w 文件可写检测
-x 文件可执行检测
-s 文件不为空检测
-e 文件存在检测
-p 有名管道检测
-g 设置SGID位检测
-k 粘着位检测
文件测试运算符
运算符
$(command)
`command`
$(( a + 1 )) 数学运算
[ conditions ] 相当于test指令
操作符
`expr $a + 1`
$(( a + 1 ))
let a=a+1
数学运算
if
if else
if elif else
case
条件结构
for
while
until
break
continue
跳出循环
循环结构
function funname(){}
函数
> 输出重定向,覆盖
>> 输出重定向,追加
< 输入重定向
>& 合并,如2>&1将标准错误输出重定向值标准输出
重定向
. filename
source filename
文件包含
set
eval
正则表达式
其它相关
Shell编程
GNU
Linux内核
历史
POSIX
SUSv3
SUSV4
标准
内核
用户 组
文件I/O模型
程序
线程
静态库和共享库
信号
基本概念
系统调用
库函数
标准C函数库
可移植性
系统编程
Linux 基础
malloc
realloc
calloc
堆
alloca
堆栈
分配
释放
内存分配
getpwnam
getpwuid
/etc/passwd
getspnam
getspent
/etc/shadow
getgrnam
getgrgid
/etc/group
用户和组
sysconf
pathconf
fpathconf
系统限制和选项
/proc
uname
系统和进程信息
strftime/strptime
asctime
gmtime/localtime
mktime
ctime
time/stime
gettimeofday/settimeofday
settimer
alarm
定时器
nanosleep
休眠
定时器与休眠
open
read
write
close
lseek
ioctl
select
poll
I/O多路复用
epoll
备选I/O模型
文件I/O缓存
文件I/O
磁盘分区
i节点
VFS
Reiserfs
ext3
JFS
XFS
ext4
Btrfs
日志文件系统
umount/umount2
挂载、卸载
文件信息
utime/utimes
utimensat/futimens
文件时间戳
chown/fchown/lchown
文件属主
access
chmod/fchmod
文件权限
基本属性
setfattr/getfattr
setxattr/getxattr/listxattr
lsetxattr/lgetxattr/llistxattr
fsetxattr/fgetxattr/flistxattr
扩展属性
文件属性
setfacl/getfacl
acl_set_file/acl_get_file
acl_from_text/acl_to_text
acl_set_tag_type/acl_get_tag_type
acl_set_qualifier/acl_get_qualifier
acl_set_permset/acl_get_permset
acl_create_entry/acl_get_entry/acl_delete_entry
acl_get_perm/acl_add_perm/acl_delete_perm/acl_clear_perms
访问控制列表ACL
mkdir/rmdir
opendir/readdir
getcwd
chdir/fchdir
chroot
目录
link/unlink
硬链接
symlink/readlink
软链接
链接
remove
移除
nftw
文件树遍历
realpath
dirname/basename
解析路径
目录与链接
inotify_init
inotify_add_watch
监控文件事件
文件
标准信号
实时信号
信号类型
sigemptyset/sigfillset
sigaddset/sigdelset
sigismember
信号集
signal
sigaction
信号处置
sigprocmask
信号掩码
sigpending
等待状态的信号
raise/killpg
发送信号
pause
等待信号
可重入函数
sigsetjmp/siglongjmp
abort
终止信号处理
sigaltstack
备选栈中处理信号
SA_SIGINFO标志(获取附加信息)
SA_RESTART
系统调用的中断和重启
信号处理函数
/proc/sys/kernel/core_pattern
coredump
SIGKILL/SIGSTOP
SIGCONT
特殊情况
SIGBUS/SIGFPE/SIGILL/SIGSEGV
硬件产生的信号
sigqueue
sigsuspend
使用掩码等待信号
sigwaitinfo
sigtimedwait
使用同步方式等待信号
signalfd
通过文件描述符获取信号
高级特性
进程凭证
创建&终止
监控子进程
程序执行过程
管道
FIFO
流socket
字节流
伪终端
SystemV消息队列
POSIX消息队列
数据报socket
消息
数据传输
SystemV共享内存
POSIX共享内存
匿名映射
映射文件
内存映射
共享内存
通信
SystemV信号量
命名信号量
无名信号量
POSIX信号量
信号量
“记录”锁(fcntl())
文件锁(flock())
文件锁
互斥(线程)
条件变量(线程)
同步
进程间通信
进程组
进程优先级和调度
DAEMON
互斥量
条件变量
线程同步
线程安全
线程取消
共享库
嵌入式Linux开发
bind
listen
connect
accept
send/recv
sendto/recvfrom
基本API
其它API
Socket API
libevent
第三方
UNIX DOMAIN
Internet DOMAIN
SOCKET
迭代型
并发型
服务器设计
网络编程
Understanding the Linux Kernel
Linux内核源代码情景分析
学习路线
源码
进程调度
内存管理
虚拟文件系统VFS
网络子系统
IPC
架构
驱动
嵌入式Linux系统编程
收藏
0 条评论
回复 删除
下一页