一些容易忘记的学习标签

下载#scp node@192.168.5.26:/home/node/??/io/color ./
上传#scp /home/node/??/io/color node@192.168.5.26: ./
sudo scp /home/node/lv_port_linux_frame_buffer-master/build/bin/demo root@192.168.64.134:/
sudo scp /home/node/lv_port_linux_frame_buffer-master/build/bin/demo root@192.168.64.134:/

编译#arm-linux-gcc main.c -o main -I ./include -L ./lib ./src/*.c -ljpeg -lm -lfont -pthread
查看进程ps -ef
查看队列 ipcs
shmget、ftok、shmctl、shmat、shmdt、semop、
struct sembuf
{
unsigned short sem_num;
short sem_op;
short sem_flg;
};

day1:子进程fork()返回pid进程id、getpid、system

day2:管道提供4兆空间 (同主机)
匿名管道 pipe(int pipefd[2])pipefd[0]读操作,pipefd[1]写操作 (内部进行fork)
有名管道 fifo mkfifo(,0644);->int fd = open()->read write

day3: 信号(62个信号 标准信号(1~31) ; 实时信号) (同主机)
标准信号(1~31)SIGSTOP、SIGCONT、SIGKILL、SIGUSR1、SIGUSR2、SIGINT
进程收到信号可以选择:屏蔽、忽略、默认、捕获(自定义行为)
捕获->暂停进程->执行进程->恢复进程
void xxx(int signum){}
signal(int num,宏) 异步接收信号,根据信号执行函数

day4: 消息队列 (同主机)

day5: 共享内存 (同主机)
shmget shmat映射 sgmdt解除

信号量 (同主机)
semget 0 p v
socket (不同主机)

day6: 线程

day7: 同步互斥、读写锁
mainA:pthread_cond_wait
mainB:pthread_cond_signal

信号量组
sem_post sem_wait pv操作

day8: SCHED_OTHER 分时调度策略 针对普通任务 静态优先级=0
SCHED_FIFO 分时调度策略 针对普通任务 静态优先级=0
SCHED_RR 时间片轮询 (种类1:同步)
抢占式调度策略 (种类二:优先级)

day9: 线程池

网络编程
192.168.64. 1
网络号 主机号
255
广播地址(主动发)
0~127
128~191
192~223

shell脚本的管道
sudo find / -name pic.h | xgargs grep "PAGE_SIZE"
---------->找不到
ls | grep [a-c] #找a~c的文件

重定向输出
ps -aus >log.txt 先清空后执行
ls -l >>log.txt 追加后执行

shell命令一
#!/bin/bash
#使用反引号``进行输入可以告诉终端 执行
buf="123 4pwd"
intbuf=567
#shell中加的是花括号,也可以不加;makfile文件中用的是圆括号
echo ${buf};echo $intbuf

read wrbuf
echo $wrbuf
#scanf("[0-9]%s",buf) 输入0-9以外的东西就会结束

shell命令二
#!/bin/bash
if [ 表达式 ] #注意:if后面+空格表达式写在[]中,两边必须要+空格
then #执行
...
...
fi #做到这结束

shell命令三
#!/bin/bash
read data

if test $(($data)) -gt 20 ;then
echo "大于20"
else
echo "小于20"
fi

移植步骤

一、下载源码包lvgl_v8.3.0 lvgl提供的案例
二、(主源码包+分支 lv_conf.h + lv_drv_conf.h = 合并)
三、修改配置文件 lv_conf.h(图形库的功能的启用,由宏定义决定是否使用 开关)
修改配置文件 lv_drv_conf.h(图形库的驱动的启用,由宏定义决定是否使用 开关)
四、修改makefile
五、编写main.c
六、编译程序 make
七、检查平台 file xxx
八、编写脚本

使用流程

1、首先必须调用 ,lv_init()对LVGL图形库进程初始化
2、初始化硬件设备驱动,例如fbdev_init()、evdev_init()
3、注册显示设备驱动和输入设备驱动(定义结构体变量+初始化结构体+设置结构体成员+注册)

while(1)
{
4、周期性的调用lv_tick_inc(5);
5、周期性的调用lv_timer_handler();
}

回调函数:简述回调函数的作用和意义?(背)

一般作为参数使用,就是需要把一个函数的地址作为另一个函数的参数使用
,当用户调用了回调函数作为参数的那个函数时,回调函数才会执行。
pthread_t id;
pthread_create(&id,NULL,(void )(xxx)(void *),NULL);


硬件

DAY1:
1、DSP:数字信号处理
2、ADC:模数转换器 怎么转?采样量化编码
3、Serial interface:串形接口 比特是以顺序发送

DAY2:
stm32F407ZET6
Z:引脚数量 E:内存容量 CoreteX-M内核 XRAM->192kb 主频->168MHZ

起始地址:0x0800 0000->扇区->->内存
1、MCU自举模式:指的是把外部程序下载到MCU(微控制器)内部到具体哪个位置
来存储,并且自举模式还包含选择从MCU内部的哪个位置来运行程序
2、ROM存储数据掉电不丢失,闪存使用有寿命,黑板原理特点:先擦除后写入,可以反复擦除十万次左右
3、常买:端子线,杜邦线,JLINK下载器
4、GPIO外设
551单片机也有I0口,一般805140个引脚,其中有1个复位引脚,2个品振引脚,2个电源引脚,3个存储选择引脚,

剩下32个引脚作为IO口,8051也把32个IO口进行分组,分为4个端口,每个端口有8个引脚,端口是以数字03进行区分,每个端口的8个引脚是
以数字0~7进行区分,比如 PO0~PO7 P10~P17 P20P27 P30~P37

DAY3:
步骤
1、命名:定义结构体赋值变量PPP_initTypeDef structure
2、打开外设时钟
3、配置为输出模式
4、对外设初始化PPP_init(PPP,&PPP_Initialized)

概念
时钟相当于外设的开关,不打开时钟则晶振的震荡信号就不发输入到MCU内部的外设中,
所以触发器没办法让寄存器接收。想要控制硬件必须通过寄存器控制
寄存器->触发器->时钟->时钟
面试题:
1、推挽和开漏的区别,推挽可以输出高低电平,而开漏只能输出低电平
2、三极管的作用,方法and开关作用 要背的图有:基极,集电极,发射极
NPN型三极管,基极+高电平
PNP型三极管,基极+低电平
文档查找:
1、STM32F4xx中文数据手册
2、STM32F407数据手册

DAY4:
嵌套向量终端控制器
DAY5:
中断控制器(NVIC)(异常优先级)
DAY6:
外部中断/事件 控制器(EXTI):边沿检测----->发给(NVIC),中断后台程序,执行前台程序;前台程序没有返回值和参数
GPIO-->NVIC启用-->EXTI-->SYSCFG
1、GPIO配置为输出模式四个步骤
2、
3、
4、


freeRTOS F407ZET6

1、编译工程时找不到freeRTOSConfig.h 去demo移植
2、头文件找不到点击魔术棒添加文件夹路径
3、freeRTOSConfig.h中需要指定编译器宏
4、freeRTOSConfig.h关掉不需要的钩子函数

裁剪

1、移植的时候注意三个.c文件
2、裁剪的时候注意宏定义的开启

任务调度

1、FreeRTOSConfig.h 文件中 ----->任务优先级 configMAX_PRIORITIES 数字越小任务优先级越低
2、时间片轮询 (种类1:同步)+抢占式调度策略 (种类二:优先级)=能一起使用


硬件I2C 的频率范围如上所述,可以是标准模式100kHz、快速模式400kHz、快速模式加1MHz,甚至更高。
软件I2C 的频率通常较低,具体数值取决于实现和微控制器性能,但很少有超过快速模式400kHz的。

posted @   周半仙  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示