- 一、linux基础、C语言、数据结构回顾
- 1、linux基础:
- 2、Linux下的C语言
- 3、面试题
- 4、linux下数据结构
- 5、Linux下高级编程
- 6、结构
- 7、物联网项目框架
- 8、现如今物联网技术
- 9、由表象到里象了解芯片
- 10、了解芯片
- 10、ARM公司和ST公司
- 11、了解STM32F103RBT6芯片
熟悉Linux环境、Red Hat centos suse ubuntu …、安装操作系统、命令、服务、权限、vim gcc
2、Linux下的C语言printf 变量 scanf 运算符 算数 + - * / % 关系 > < == >= <= != 逻辑 && || ! 赋值 = += -= ... 位 << >> & | ~ ^ 条件 ? : 下标 [] 指针 & * 分量 . -> 强制 (类型) 自增自减 ++ -- 逗号 , 分支结构 if switch 循环结构 for while do...while 跳转结构 break continue goto return 指针 数组 函数 结构体 共用体 枚举 预处理 文件IO(标准IO) 文件的操作 fopen fclose fread fwrite fseek fflush3、面试题
(1).把一个.c文件编译成一个可执行文件,需要经历哪些阶段 hello.c -> a.out
源文件 被处理过的源文件 汇编文件 目标文件
hello.c------>hello.i----->hello.s---->hello.o----->
预处理 编译 汇编 链接
(2).在预处理阶段会做哪些操作?
文件包含 #include 条件编译 宏定义 #define
(3).文件包含中,"" 和 <> 有啥区别
<> : 从指定的目录中查找头文件(/usr/include), 如果找不到,就报错 "" : 从当前目录中查找头文件 如果找不到,再从指定的目录中查找头文件4、linux下数据结构
5、Linux下高级编程线性存储 顺序表 数组 一维数组 多维数组 二维数组 链表 有头/无头 头节点 单向/双向 遍历方向 循环/不循环 环状结构 普通链表->引入链式存储结构 通用性强的链表->通用性强 内核链表 ================================= 1.可以在PC机中写出通用性强的链表 2.大家可以使用内核链表 3.大家可以在纸上写出链表的增删改查 ================================= 栈式存储结构 先进后出 队列存储结构 先进先出 树状存储结构 树 二叉树 完全二叉树 满二叉树 -------------- 平衡二叉树 ========================== 面试题 遍历方法 先序(根) 根左右 中序(根) 左根右 后序(根) 左右根 1->给了一棵树,写三种遍历方法 2->给了中序,任意给一个先序或者后序 然后画出这棵树 ==========================
文件IO(系统调用和标准IO) 信号 signal(int signum, ) 进程 线程 进程间通信 网络套接字 TCP/UDP QT6、结构
在硬件上写软件的驱动程序 应用程序 微信 QQ 游戏 应用层 图形库 jpg jpeg 库文件 lib(静态库 动态库) 根文件系统(把硬盘中的二进制数据,识别成) 不同格式的文件 底层 kernel Linux内核 android内核 bootloader(BIOS + GRUB) GRUB(引导内核) 软件 BIOS(初始化硬件/检测硬件) ================================ 硬件 CPU + 内存 + 硬盘 + 外设(键盘 鼠标 屏幕)7、物联网项目框架
华为公司总结的物联网项目框架 应用层 http mqtt coap 平台层 小米 小米IoT 华为 Ocean Connect 阿里 AIoT 百度 百度天工 移动 oneNet 联通 中国联网物联网 ----------------------- 很多中小型公司也会有自己公司的物联网云平台 ESlink iot.embsky.com 网络层 WiFi模块 感知层 STM32F103RBT6芯片的单片机开发板 ----------------------------------- 例子: 5G技术(第5代) 增强型的移动互联网络 -> 虚拟现实(VR) VR->AR->MR... 超高可靠性超低时延的业务 -> 车联网 车联网(自动驾驶 无人驾驶) 远程医疗 海量的物联业务 -> 物联网 -----------------------------------8、现如今物联网技术
智能终端 : 单片机驱动开发 / 芯片模组开发 边缘计算 : 高端ARM芯片的驱动开发 有些公司除了使用高端的ARM芯片 也是使用高端的单片机芯片 =================================== 例子 : CPU 中央处理器 显卡(GPU) 图像处理单元 显卡 边缘计算 人工智能 -> 英伟达 寒武纪 -> 人工智能加速卡 =================================== 中控平板 人机交互 智能音箱 小爱同学 天猫精灵9、由表象到里象了解芯片
公司 : 结果 学习 : 过程 通过开发板俯视图,了解开发板上焊接的设备10、了解芯片
无论是SOC(高端芯片)还是MCU(单片机芯片),都是可以 自己组成一个微型的计算机系统 STM32F103RBT6 = CPU + 内存 + 硬盘 + 外设 CPU ARM-CORTEX-M3(72MHz) 内存 用来支援运行的程序 硬盘 存储的是烧写的程序 外设 程序员通过外设来操作芯片 S5P6818 = CPU + 内存 + 硬盘 + 外设 CPU ARM-CORTEX-A53 内存 用来执行硬盘中的程序 硬盘 存储的是三星公司出产芯片时写入 的程序 外设 比单片机外设多很多10、ARM公司和ST公司
ARM是一家公司,在英国剑桥成立,在2016年底ARM公司 被日本软银收购了(234亿英镑) 从ARM11之后,重新命名 ARM-CORTEX-A 高精尖的应用产品(手机 安卓电视) ARM-CORTEX-A57 ARM-CORTEX-R 实时操作系统 军工 高端医疗 航空航天 ARM-CORTEX-M 工业控制(工控领域) ST公司,意法半导体公司,全球比较大的半导体厂商公司 研发半导体芯片 STM32 32位芯片 STM8 8位芯片 ================================= 使用8位的芯片,计算两个16位数据的和 低8位计算一次,高8位计算一次 =================================11、了解STM32F103RBT6芯片
打开目录下 P22 STM32F103RBT6 FLASH SIZE(硬盘) 128Kb RAM SIZE(内存) 20Kb Package(封装形式) 64管脚的封装 Timer functions(定时器) 4×16bit普通 2×看门狗 RTC 24bit定时器 ADC(模数转换器) 16×12bit 16个转换通道 12bit量化位 DAC(数码转换器) 无 I/Os(输入输出的接口) 51 Serial interface(串口) 2个SPI 2个I²C 3个USART/UART 1个USB 1个CAN总线 打开 目录下 P19 CPU是通过三总线来访问外设的 (数据总线 地址总线 控制总线) ------------------------- 想要把十进制整数100存储到0x12345678地址中 01100100 通过 数据总线 进行传输 0x12345678 通过 地址总线 进行传输 控制总线需要产生写的时序 ------------------------- 在STM32芯片中AHB AHB1 AHB2都是三总线,叫做高速总线 APB1 APB2也是三总线,叫做外设总线 顾名思义,高速总线上的工作频率基本上和CPU一样 外设总线上连接的都是外设资源 当程序员想要驱动芯片中的外设时 首先需要使能这个外设的时钟 需要查看该外设连接了哪个总线,需要通过总线打开时钟 ------------------------------ 例如: 想要驱动GPIOA外设,已知GPIOA连接了APB2总线 所以在驱动之前需要通过APB2总线使能GPIOA的时钟 (除非操作的外设有自己的时钟源) ------------------------------ 在STM32F103RBT6芯片中所有GPIO外设连接到了APB2总线 但是不一定所有的ST芯片都是一样的 (不同的芯片看不同的手册) 基本上每一组GPIO都会有16个管脚[0 - 15] GPIOXY X = A B C D Y = 0 1 2 3 ... 15 PA10 : GPIOA组的第10个管脚 PC0 : GPIOC组的第0个管脚 在STM32F103RBT6芯片中 PA0 - PA15 PB0 - PB15 PC0 - PC15 PD0 PD1 PD2 一共是51个I/O管脚 芯片的管脚是多功能复用型的管脚 输入功能 上拉输入 下拉输入 浮空输入 输出功能 推挽输出 开漏输出 复用功能 推挽复用 开漏复用 模拟功能 模拟输入



