嵌入式Linux学习分五个阶段

    第一阶段:

      01嵌入式环境搭建初期
      02C语言语法概述
      03C语言内存操作
      04c语言函数
      05linux基础
      06gun基础

    第二阶段:

      01-linux之io系统编程

      02-linux进程间通信

      03-linux多线程

      04-linux网络编程基础

    第三阶段:

      01-ARM开发板基础知识

      02-ARM汇编语言

      03-ARM硬件开发基础

      04-ARM Bootloader开发

      05-ARM硬件接口开发

    第四阶段:

      01-移植搭建

      02-uboot、UART、DDR2、board_init、根文件系统、linux内核分析

      03-字符设备驱动、linux驱动中断剖析、input子系统学习

      04-内核、IIC设备驱动学习

    第五阶段:

      项目开发实战

以下是第一阶段的学习笔记:

1、实验室一个老铁的笔记:https://www.cnblogs.com/kb19970405/p/11075257.html

2、我自己做的笔记:

一、C语言基础篇

、内存分布思想
内存的属性:①大小;②在哪里
%p看地址
代码段 只读数据段R 全局的数据空间RW(初始化和未初始化的) 运行时的堆空间(malloc) 栈空间(局部变量) 内核空间(应用程序不许访问) 、内存分布之只读空间
代码段 只读数据段(字符串常量) 、内存分布之数据段
未初始化的全局数据---》bss
初始化全局数据--------》data
函数中static int a------》bss 、内存分布之堆空间
运行时,可以自由,自我管理的分配和释放的空间,生命周期由程序员决定
malloc()
free() 、函数
标签---------函数名(地址)
函数三要素:函数名(地址);输入参数;返回值----------》告知编译器
指针表示函数:int (*p)(int,int, char); 、连续空间传递:字符空间和非字符空间
(地址)
数组
结构体----结构体变量 、连续空间只读性
void fun(char *p)(给空间可被修改);---------------void fun(const char *p);(只读) 、函数输入的字符空间----------内存里面存放了0x00作为结束符
char *p
空间:空间首地址+结束标志
int strlen(const char *p); 、函数输入的非字符空间--------数量
unsigned char *p
void fun(unsigned char *p,int len);
void* :数据空间的标识符
void *memcpy(void *dest, const void *src, size_t n); int fun(void *buf, int len);
{
unsidgned char *tmp=(unsigned char*)buf;//强制类型转换
} 、函数返回值:基本数据类型、指针类型 (静态区、只读区、堆区)
拷贝
int *fun(void);------------->void fun(int **p);更新地址 、返回连续空间类型-----指针类型
int *fun();
int *p=fun();
返回地址:合法性(不是局部变量(特别是函数中定义的局部变量(除非加static静态或者用malloc(堆)申请)作为返回))-------重点 *、static的作用:
修饰局部变量:局部静态化,局部变量在静态数据段存在,生存周期非常长
修饰全局变量:防止重命名,限制变量名只在本文件内起作用
修饰全局函数:防止重命名,限制函数名只在本文件内起作用 、const: C:只读,建议性 C++:常量 、volatile:
防止C语言编译器的优化
它修饰的变量,该变量的修改可能通过第三方来修改 *、地址0x67a9存储整型变量0xaa66----------》*((int*)0x67a9)=0xaa66 二、Linux操作系统基础篇 、Linux组成结构:
硬件--》内核--》shell和一些工具--》用户
|--》文件系统 、文件类型:
普通文件 -
目录文件 d
链接文件 l
块设备 b
字符设备 c
Scoket s
管道文件 p 、命令行别名
alias 列出已经建立的别名列表
alias alias-name(you want)= 'value'(原本) 建立别名
unalias alias-name 取消别名 、通配符:①*0个或多个;②?单个;③[xx]某个范围内的任意一个字符 、输入输出重定向
>:将一个命令的输出放入文件而非屏幕
>>:不会把原文件覆盖,在原文件末尾追加
<:从标准输入设备键盘输入 、管道符:|
将一个进程的输出作为另一个进程的输入 、%:作业控制,提示符等
$ :取某一列的值,取变量值等 、创建文件:touch filename 不存在就新创,存在则修改
创建目录:mkdir [-p] directory_name -p 目录不存在则创建
删除文件:rm ~~ -i(询问是否删除) -f 强制删除
删除目录:rmdir ~~ -r(删除非空目录) -i(询问) 、拷贝目录:
cp -r ~原~ ~目~ 、文件目录权限
chmod 修改文件目录的访问权限 字母(u\g\o\a = r\w\x) 数字八进制表示 chown 更改某个文件或目录的属主和属组,可用于授权 chgrp 改动文件或目录所属的组 、文件目录查找
find
locate 、grep
查找包含某些字符串的结果,对文件或输出结果进行过滤,大小写敏感 -i 忽略大小写 -v反向匹配 、wc
统计文件或输出结果 -i 统计多少行 -w统计多少个单词 -c统计多少个字符 、du 显示磁盘使用摘要信息
df 显示整个文件系统的空间使用磁盘情况 、编译过程:
-c 只编译不连接,生成目标文件.o
-S 只编译不汇编,生成汇编代码
-E 只预编译
-g 包含调试信息
-o file 指定目标输出文件
-I dir 搜索头文件路径 、静态链接库和动态链接库
.a[libname.a]
.so[libname.so.[主版本号.次版本号发行号.]] -static 静态链接
-shared 生成动态库文件,进行动态编译
-L dir 库文件搜索中添加路径
-f PIC 生成使用相对位置无关的目标代码 、编译静态链接库
、先生成目标文件.o
、ar crv [*.a] [*.o] 、调用静态链接库
gcc -o [file] [file.c] -L. [file.a] 、编译动态链接库
、生成位置无关的目标代码 gcc -fPIC -c [*.c]
、gcc -shared -o [*.so] [*.o] 、调用动态链接库
gcc -o [fle] [file.c] -L. [file.so] 、gdb:调试工具 *、makefile 的编写
targets(目标) :prerequistes(依赖)
command(命令) *、Autotools
autoscan----aclocal----autoconf---- [autoheader]----automake

其它阶段会后续更新!!!加油(捂脸)

嵌入式Linux学习笔记之第一阶段---基础篇的更多相关文章

  1. 嵌入式Linux学习笔记(0)基础命令。——Arvin

    学习记录: 到今天为止ARM裸机开发学习进程:1.2.1-1.2.14 预科班知识Linux介绍学习进程:0.2.1-0.2.6 学习内容笔记: 学习了Linux的开发方式的优劣介绍 学习了常用文件夹 ...

  2. Linux 学习笔记之超详细基础linux命令 Part 14

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 13---------------- ...

  3. Linux 学习笔记之超详细基础linux命令 Part 13

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 12---------------- ...

  4. Linux 学习笔记之超详细基础linux命令 Part 12

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 11---------------- ...

  5. Linux 学习笔记之超详细基础linux命令 Part 8

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 7----------------- ...

  6. Linux 学习笔记之超详细基础linux命令 Part 6

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 5----------------- ...

  7. Linux 学习笔记之超详细基础linux命令 Part 5

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 4----------------- ...

  8. Linux 学习笔记之超详细基础linux命令 Part 4

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 3----------------- ...

  9. Linux 学习笔记之超详细基础linux命令 Part 2

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 1----------------- ...

随机推荐

  1. ZR#997

    ZR#997 解法: 找找规律就出来了,全场最简单的一道题. CODE: #include<iostream> #include<cstdio> #include<cst ...

  2. Spring boot + mybatis 只读取到一个jar包中的mapper配置文件

    采用spring boot  开发了一个多模块项目,有多个模块中都有mapper配置文件. 采用如下的方式配置,制度去到了一个模块jar包中配置文件: @Bean(name = "sqlSe ...

  3. 【linux】保存屏幕日志log

    例如: #!/bin/bash #LOG="examples/mnist/lenet_log_mylog" LOG="LOG/log.txt.`date +'%Y-%m- ...

  4. 个人学习分布式专题(二)分布式服务治理之Dubbo框架

    目录 Dubbo框架 1.1 Dubbo是什么 1.2 Dubbo企业级应用示例(略) 1.3 Dubbo实现原理及架构剖析 1.4 Dubbo+Spring集成 Dubbo框架 1.1 Dubbo是 ...

  5. 常见ETL工具一览

    这些年,几乎都与ETL打交道,接触过多种ETL工具.现将这些工具做个整理,与大家分享. 一 ETL工具[国外] 1. datastage点评:最专业的ETL工具,价格不菲,使用难度一般 下载地址:ft ...

  6. SQL中AVG()、COUNT()、SUM()等函数对NULL值处理

    一.AVG() 求平均值 注意AVE()忽略NULL值,而不是将其作为“0”参与计算 二.COUNT() 两种用法 1.COUNT(*) 对表中行数进行计数 不管是否有NULL 2.COUNT(字段名 ...

  7. qt 加载翻译文件 qm

    QTranslator* myTranslator=new QTranslator; myTranslator->load("xxx.qm"); app.installTra ...

  8. 安装kvm安装虚拟机centos

    1 安装阿里云的镜像站 #将原来的镜像备份 cd /etc/yum.repos.d/ mkdir back mv CentOS-Base.repo ./back/ # 安装阿里的镜像 wget -O ...

  9. 【Oracle/Java】批量删除16张十万数据的表 单线程耗时45秒 多线程耗时38秒

    昨天做了插入的单线程多线程比较,今天做个删除的. 单线程批量删除类代码: package com.hy.delete.singlethread; import java.sql.Connection; ...

  10. SpringBoot持久层技术

    一.Springboot整合mybatis maven中添加对数据库与mybatis的依赖 <dependencies> <dependency> <groupId> ...