嵌入式视频随笔

基本程序设计思想
语言工具的特性

嵌入式培训视频

GCC: GNU Compiler Collection <预处理、编译、汇编、链接>

命令功能指令
-v版本查询gcc -v
-简单编译gcc test.c -o test
-E预处理gcc -E test.c -o test.i
-S编译gcc -S test.i -o test.s
-c汇编gcc -c test.s -o test.o
-链接gcc test.o -o test
-D宏定义gcc -D DATA=xx

头文件、宏定义

#include " " – 自定义;<> – 系统定义
#define 宏定义
#ifdef, #else, #endif, #undef
预定义宏 FUNCTION, FILE, LINE
宏展开中的#, ## (字符串化,连接符号)

关键字

32个

  1. 杂项
关键字含义
sizeof查看内存空间容量的关键字
return函数返回
  1. 数据类型:指定内存大小的关键字
关键字含义
char软件操作的最小单位,硬件处理的最小单位。
int操作系统单个周期能处理的最优大小
long/short
unsigned/signed无/有符号数
float/double浮点数
void
  1. 自定义数据类型
关键字含义
struct结构体,占用一段内存连续空间
union共用体,共用起始地址的一段内存
enum枚举,整形常数的集合,定义
typedef数据类型的实意化
  1. 逻辑结构
    if, else
    switch, case, default
    do, while, for
    *continue, break, goto
  2. 类型修饰符:指定内存分布的关键字
    auto, register, static, const, extern, volatile
  3. 运算符
    算数运算符,逻辑运算,位运算,赋值运算,内存访问符号
  4. 逻辑操作
    顺序执行,分支执行,循环执行

函数

函数三要素:函数名,参数列表,返回值类型
函数名就是地址
函数指针 int(*p)(int, int, char)

强制类型转换 p=(int(*)(constant char *, …))0x8048320

实参、形参
传递形式: 值传递,地址传递,连续空间<数组,结构体>
地址传递关注空间的可读性,对于只读空间不可写。
非/字符空间:字符空间以0x00为结尾,非字符空间指定空间大小
void* 数据空间的标识符
int/char/… * 单一空间的标识符
指针作为(函数)空间返回的唯一类型

指针

指针二要素:指针大小和读取内存的方式
& 取址符,* 指针标识/取值符,[ ] 指针指向内存空间

指针+修饰符
const char *p 修饰的内存空间,而不是指针本身
char * const p 修饰的是指针本身而不是内存空间

指针+运算符
操作的单位是sizeof§, p[n]访问内存值,p++操作地址,NULL地址无效值。

数组的数组名是一个常量,不能进行赋值,空间定义时进行初始化。
数组越界
char buf[10] = “abc” 常量区向变量区的拷贝,buf[2]=‘e’ ✅
char *p = “abc” 常量区不可赋值,p[2]=‘e’ ❌

strcpy, strncpy 字符拷贝函数,字符串以0作为结尾。
字符空间:以ASCII编解码的空间,以\0作为结束标志。
非字符空间
memcpy

指针数组 int * p[10] 两者可以看成等效,p[0]指向第一个数据内容。
多级指针 int ** p
函数指针 int(*p)(int, int, char)
以块的方式读取内存 int *p[5]

内存空间

内存分布
结构体 struct 字节对齐/位域
size/strings/nm

内存泄漏(Memory Leak)是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。

内存访问符号
( ):限制符 (a+b)*c 函数访问
[ ] : 数组,内存访问的符号
{ } : 函数体的限制符
->、. : 地址访问,变量访问
&、 * :取址符,取值符

Linux

  1. Linux 组成结构
    Computer Resource 硬件资源
    Kernel 内核
    shell 外壳 <bash, cshell …>
    FileSystem 文件系统
    特性:多用户、多任务、多平台、图形化界面、硬件支持(低配置)。
    vmwave – 虚拟机
    Ubuntu – 桌面开源的,比较纯正的linux
    图形模式与命令模式的切换:ctrl + Alt + F2/F3/F4/F6 图形转命令;ctrl + Alt + F7 命令转图形。

  2. 文件系统:一种组织计算机文件和资料的方法
    EX3是基于日志方式的文件系统
    SWAP是交换分区的文件系统
    linux中一切皆文件。
    蓝色–目录,绿色–可执行,浅蓝色–链接,红色–压缩,灰色–其它(option)
    普通文件 – -,目录文件–d,链接文件–l,块设备–b,字符设备–c,Socket–s,管道文件–p
    目录结构:磁盘逻辑结构管理物理结构,格式化将磁盘分成很多的文件块区。

《linux命令大全》
$command [option(s)][arguments(s)] 命令行格式,区分大小写
命令行别名使用 alias alias-name=‘value1;value2…’/unalias

shell的特殊字符
1.通配符 *–通配0个或多个字符,?–通配任意单个字符,[]–通配范围内字符。
2. 一行执行多条命令 ;
3. 输入输出重定向 >, <, >>
4. 管道符 |,将一个进程的输出作为另一个进程的输入
5. 其他 %, $, ~
联机帮助 man name/-k keyword
清屏 clear
历史记录 history

分类常用命令command
文件管理查看文件和目录pwd、cd、ls、file
文件管理创建和删除文件目录touch、mkdir、rm、rmdir/ln
文件管理显示文件内容cat、more、head、tail
文件管理拷贝和移动文件目录cp、mv
文件管理文件目录权限<r、w、x、–> chmod、chown、chgrp
文件管理查找文件find、locate
文件管理过滤和统计grep、wc
系统管理日期时间与进程查看data、cal、ps
系统管理切换用户,设置普通用户的超级权限与关机重启su、sudo、shutdown、reboot
用户管理密码设置和修改passwd
用户管理查找用户id、users、who、who am i、whoami
磁盘管理查看磁盘信息du、df
网络配置管理查看网络连接ping、ifconfig
应用程序管理扩展名rpm、dep
应用程序管理安装卸载dpkg、install、apt

VI三种模式
命令模式 command mode,插入模式 edit mode,末行模式 Ex mode。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值