嵌入式学习笔记

嵌入式系统定义 技术角度以应用为中心,以计算机技术为基础,软硬件可裁剪,应用系统对功能,可靠性,成本,体积,功耗,和应用环境有特殊要求的专用计算机系统系统角度 设计完成复杂功能的硬件和软件并使其紧密契合在一起的计算机系统


实时在规定的时间内,完成规定的动作
红帽linux 基本命令
ls 查看当前目录的内容


clear 清屏


mkdir XX 建立某个目录


CD 进入某个目录


CD ..返回上层


CD ../..返回根目录


rmdir XX 删除目录(目录为空的情况下)

rm -rf XX 强制删除目录


rm -f XX.X 文件删除


ifconfig 显示本机网卡信息


ifconfig XX(网卡名) XX.XX.XX.XX 修改IP地址


cp XX.X /XX 拷贝当前目录下某个文件到指定目录下

cp -r XX /XX 拷贝目录到某个目录下


mv XX CC 重命名


mv XX /home/ 把XX移到某个目录下(剪切)


tar -xvzf XX -C /.../..../或.(.到当前目录)

x 解压缩
v 显示文件名
z 使用 gzip 压缩解压缩
f 基于文件

r4 可读 w2 写 x1 执行

s或S(SUID,Set UID):可执行的文件搭配这个权限,便能得到特权,任意存取该文件的所有者能使用的全部系统资源。请注意具备SUID权限的文件,黑客经常利用这种权限,以SUID配上root帐号拥有者,无声无息地在系统中开扇后门,供日后进出使用。

T或T(Sticky):/tmp和 /var/tmp目录供所有用户暂时存取文件,亦即每位用户皆拥有完整的权限进入该目录,去浏览、删除和移动文件。

chmod XX 744

vim a.c b.c c.c 同时打开多个文件


i插入模式 ESC退出 Shift+:进入命令模式 在命令模式下,n上一个文件,N下一个文件,rew从第一个开始 wq保存并退出
yy 复制 p黏贴 dd删除 u撤销
gedit XX.c gcc XX.c ./a.out 执行
vim 跳到指定行 命令模式下 :15 (就到15行)

 

 

linux下程序在连接过程中做了什么

http://wenku.baidu.com/view/97393050ad02de80d4d84071.html符号解析和重定位

C语言中什么是段错误,用gdb怎么调试

http://wenku.baidu.com/view/08beca82d4d8d15abe234ebb.html内存越界直接运行错误后给出错误的行数

如何自动生成Makefile文件

http://blog.youkuaiyun.com/xiewenbin1987/article/details/6823476

静态库和动态库

接静态库其实从某种意义上来说只不过它操作的对象是目标代码而不是源码而已。因为静态库被链接后库就直接嵌入可执行文件中了,这样就带来了两个问题。

(1)首先就是系统空间被浪费了。这是显而易见的,想象一下,如果多个程序链接了同一个库,则每一个生成的可执行文件就都会有一个库的副本,必然会浪费系统空间。

(2)再者,一旦发现了库中有bug,挽救起来就比较麻烦了。必须一一把链接该库的程序找出来,然后重新编译。

而动态库的出现正弥补了静态库的以上弊端。因为动态库是在程序运行时被链接的,所以磁盘上只须保留一份副本,因此节约了磁盘空间。如果发现了bug或要升级也很简单,只要用新的库把原来的替换掉就行了。

但是静态库也有自己的优点:

编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。

静态库的名字一般是libxxx.a(Linux)

动态库的名字一般是libxxx.so (Linux),有时候也是 libxxx.so.major.minor,xxxx是该lib的名称,major是主版本号, minor是副版本号

linux系统有几个重要的目录存放相应的函数库,如/lib /usr/lib

当天笔记

源程序->预处理(头文件加载宏替换)->{编译->汇编}->链接->可执行
gcc -o 生成的可执行文件名 XX.c/ XX.c -o生成的可执行文件名
gcc -E XX.c > XX.i 只进行预处理 检查宏是否正常替换
gcc -c hello.c 编译生成.o文件
-S 汇编 -s小写的话生成可执行a.out不生成.s文件
-O(大写) -> time -O/O2 ./执行文件 优化执行时间 测试
gcc -wall *.c -o main 提示警告信息
-w 关闭警告
-O2
gcc -c *.c 通配符 编译当前目录下所有的.c文件

gdb 功能 1启动被调试程序 2.断点调试 3查看停止时的程序状态、变量值
gcc -g(使用时必须加g)XX.c -o CC
gdb CC
(gdb) run
(gdb) break 15 执行到代码的15行之后进行调试
list 查看程序
next 单步执行 step 单步但进入子程序
Print 变量名
continue 结束调试运行完程序
q 结束退出

加载头文件用 "" <>的 区别前者先在当前目录找,找不到到指定目录找 后者只在指定目录找
现有main函数调用了add函数 add.h在当前目录或其他目录


gcc main.c add.c -I ../其他目录
系统的库文件位置 cd/usr/include/ 下 如果在main函数中调用sin函数用到了math.h
gcc main.c -lm 这里的m为 libm.so 是系统的动态库文件
动态库 执行时才链接 静态库 执行前加入,如果库文件改变功能,程序执行结果却不变,难以升级
静态库创建
ar rcs 库名 xx cc vv
rc 静态库不存在就创建 s 更新库文件
gcc main.c -l库文件名 -L. 当前目录 -L../ 上层
动态库的创建
gcc -shared -fPIC -o 库名.so cc zz dd
gcc main.c ./libxx.so -o 可执行文件名
宏定义DEBUG在程序调试中的初级用法
1 #define __DEBUG__
2 #ifndef __DEBUG__
3 #define debug_msg(fmt, args...)
4 #else
5 #define debug_msg(fmt, args...) printf(fmt, ##args)
6 #endif
例
1 #include<stdio.h>
2 #include"debug.h"
3 int main()
4 {
5 printf("hello!");
6 debug_msg("OK!");
7 return 0;
8 }
程序管理器 Makefile
vim Makefile或makefile 或其他名称
make -f XX/XX clean
例
1 obj=add.o main.o sub.o div.o mul.o
2 main:$(obj)
3 gcc -o main $(obj)
4 $(obj):add.c sub.c main.c div.c mul.c
5 gcc -c *.c
6 .PHONE:clean
7 clean:
8 rm -f main.o add.o sub.o div.o mul.o main
 

 

什么是系统缺省的shell

缺省的shell就是默认的shell,你创建一个账户是系统默认会给你分配一个shell,linux下是bash,bsd下是csh,这个就是缺省的shell,当然你可以自己修改;
查看你的系统安装的shell
$ls -l /bin/*sh
修改shell:
$chsh shell
或者修改/etc/passwd 的最后一项

AIX 下是Korn Shell.
  Solaris缺省的是Bourne shell.
  FreeBSD缺省的是C shell
  HP-UX缺省的是POSIX shell.
  Linux是Bourne Again shell.

Linux中的shell有多种类型,其中最常用的几种是Bourne shell(sh)、C shell(csh)和Korn shell(ksh)。三种shell各有优缺点。

Bourne shell是UNIX最初使用的shell,并且在每种UNIX上都可以使用。Bourne shell在shell编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种shell。

Bourne Again shell,它是Bourne shell的扩展,简称Bash,与Bourne shell完全向后兼容,并且在Bourne shell的基础上增加、增强了很多特性。Bash放在/bin/bash中,它有许多特色,可以提供如命令补全、命令编辑和命令历史表等功能,它还包含了很多C shell和Korn shell中的优点,有灵活和强大的编程接口,同时又有很友好的用户界面。

  C shell是一种比Bourne shell更适于编程的shell,它的语法与C语言很相似。 Linux为喜欢使用C shell的人提供了Tcsh。Tcsh是C shell的一个扩展版本。Tcsh包括命令行编辑、可编程单词补全、拼写校正、历史命令替换、作业控制和类似C语言的语法,它不仅和Bash shell是提示符兼容,而且还提供比Bash shell更多的提示符参数。
  Korn shell集合了C shell和Bourne shell的优点并且和Bourne shell完全兼容。Linux系统提供了pdksh(ksh的扩展),它支持任务控制,可以在命令行上挂起、后台执行、唤醒或终止程序。

POSIX Shell
   POSIX shell 是Korn shell的一个变种. 当前提供POSIX shell的最大卖主是Hewlett-Packard。在HP-UX 11.0 , POSIX shell 就是/bin/sh,而bsh是/usr/old/bin/sh.

TCSH shell不同于其他的shell,因为控制结构更符合程序设计语言的格式。例如TCSH 的test条件的控制结构是表达式,而不是linux命令,得到的值是逻辑值true或false,TCSH的表达式与C语言中的表达式基本相同。

 

 

Waymo数据集里的隐藏彩蛋:5个激光雷达数据融合实战(附Python代码) 本文深入解析Waymo数据集中5个激光雷达的数据融合技术,提供Python实战代码,帮助开发者掌握多传感器协同工作的关键方法。通过时间同步、坐标转换和运动补偿等技术,实现高精度3D场景重建,提升自动驾驶系统的环境感知能力。 阅读详情

相关推荐

BurpSuit在不同浏览器中配置代理

文章通过分享各大浏览器如何设置代理的知识,帮助初学者快速掌握代理配置相关技能。

北冥同学的成长记录笔记 1万+

嵌入式学习笔记——概述

嵌入式系统概述

qq_41954556的博客 7562

Windows 24H2下eNSP AR_40启动失败的终极修复指南

本文针对Windows 11 24H2更新后eNSP AR_40路由器启动失败的问题,提供了终极修复方案。核心在于解决系统强制虚拟化安全(VBS/Hyper-V)与老版模拟软件的兼容性冲突。指南详细介绍了安装关键系统更新KB5053656、精细调整Windows虚拟化功能以及后续排错步骤,帮助用户在24H2系统上稳定运行eNSP进行网络实验。

weixin_29233333的博客 507

嵌入式系统学习笔记·嵌入式发展概述

学习笔记记录及分享 大纲中的图片详见: 学习课程:高校邦·嵌入式系统基础学习

fStardust的博客 209

FDTD Script命令学习-farfield3d/farfieldux/farfielduy

介绍了farfield3d/farfieldux/farfielduy命令功能,及不同应用语法和参数介绍,以及对官网示例进行介绍。

jxxl_1314的博客 3097

碎碎念android eMMC【转】

本文转载自:https://blog.youkuaiyun.com/Fybon/article/details/44242549 一、/dev/blockroot@:/dev/block #lsbootdevicemmcblk0mmcblk0p1mmcblk0p10…….mmcblk0p18mmcblk0p19mmcblk0p2mmcblk0p20……mmcblk0p29mmcblk0p3mmcblk0p3...

zzb2760715357的博客 377

【学习笔记】嵌入式三级

目录:嵌入式系统CPU:开发过程JTAGARM/Advanced RISC MachinesUSB:S3C2410实时操作系统**uC/OS-IIS**VxWorksLinuxLinux与UnixAndroid开源嵌入式操作系统GUN开发工具UART通用异步收发器SocRS-232 RS-485网络以太网路由器CAN总线存储器其他汇编ARM的六大类指令集---LDR、LDRB、LDRH、STR、S...

weixin_42881419的博客 1639

Slurm集群调度策略详解(1)-主调度

Slurm调度系统中针对作业的调度主要有三种,主调度,回填调度,GANG调度,这篇文章主要针对主调度进行解析。

h_m_l的博客 6029

嵌入式系统开发技术学习笔记:掌握嵌入式领域核心知识的利器

嵌入式系统开发技术学习笔记:掌握嵌入式领域核心知识的利器 去发现同类优质开源项目:https://gitcode.com/ 项目核心功能/场景 深入学习嵌入式系统开发,全面掌握技术要点 项目介绍 在当前科技迅猛发展的时代背景下,嵌入式系统作为连接物理世界与数字世界的桥梁,其重要性不言而喻。《嵌入式系统开发技术——学习笔记.pdf》正是为了满足这一领域的学习需求而诞生的宝贵资料。这份笔记详尽记录了嵌...

gitblog_06776的博客 1096

CANdb++ Editor实战:5步搞定DBC文件信号布局与字节对齐(附常见错误排查)

本文详细介绍了使用CANdb++ Editor进行DBC文件信号布局与字节对齐的实战方法。通过五步法,深入解析Intel与Motorola字节序差异、跨字节信号布局规则,并借助Layout视图等工具,帮助工程师高效解决信号错位、数据解析错误等常见问题,确保CAN网络通信的准确性与可靠性。

solidity8miner的博客 695

YOLOv12优化:原创自研 | 带有注意力机制的隐藏状态混合器的状态空间(HSM-SSD),实现暴力涨点 | CVPR2025 EfficientViM

可以将 带有注意力机制的隐藏状态混合器的状态空间(HSM-SSD)中的注意力机制换成专栏其他注意力机制 ,那么你就能实现独一无二的原创。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 663

嵌入式操作系统学习笔记

嵌入式操作系统学习笔记

ErikChan的博客 319

基于YOLOv5的空间目标智能监测系统:航天器与太空碎片识别技术实现

做完这个项目,你会发现自己完整走过了“数据采集→标注→模型训练→功能集成→界面开发”的毕设全流程,这不仅是技术能力的证明,更是对“技术守护宇宙安全”这一理念的实践。答辩时,你可以重点讲这几点:系统解决了航天监测的哪些痛点、YOLOv5在太空目标检测中的性能优势、系统未来能怎么优化(比如对接航天监测网络、实现实时轨道预测)。未来,这个系统还能往“更智能”的方向发展:比如结合轨道计算预测碰撞风险、开发移动端APP让天文爱好者参与太空垃圾上报、在航天任务中实现全自动避障决策……想象空间很大。

m0_64661770的博客 109

嵌入式Linux学习笔记

《嵌入式Linux学习手册V0.63.pdf》搭配 http://blog.youkuaiyun.com/zjhsucceed_329/article/details/32336019 嵌入式linux学习笔记 http://www.openedv.com/posts/list/42583.htm

罗蛟。乐观、积极,尽己所能 713

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

[韦东山]嵌入式Linux学习笔记...吗?

目录硬件部分(Linux嵌入式学习——点个灯(一)Linux嵌入式学习——点个灯(二)Linux嵌入式学习——点个灯(三)Linux嵌入式学习——点个灯(四)Linux嵌入式学习——点个灯(五)流水灯MakefileMakefile基础Makefile函数与实例 本文是基于韦东山视频的学习笔记 硬件部分 (Linux嵌入式学习——点个灯(一) Linux嵌入式学习——点个灯(二) Linux嵌入式学习——点个灯(三) Linux嵌入式学习——点个灯(四) Linux嵌入式学习——点个灯(五) 流水灯 Mak

weixin_36778746的博客 980

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

嵌入式软件开发学习笔记-总序

这是我第一次写博客,在以前的很多学习过程中,依靠着别人的博客学到了很多东西。吃水不忘挖水人,近期自己准备开始嵌入式软件的学习,所以将会不定期更新学习笔记,大家一起学习。

luwb520的博客 258

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

蓝桥杯嵌入式学习笔记

中断,是指单片机处理程序运行中出现的紧急事件的整个过程。程序运行过程中,系统外部、系统内部或者现行程序本身若出现紧急事件,单片机即中止现行程序的运行,自动转入相应的处理程序(中断服务程序),待处理完后,再返回原来的程序运行,这整个过程称为程序中断。RTC(Real-Time Clock)实时时钟 它是一个独立的定时器RTC模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟、日历、闹钟的功能RTC时钟部分能够提供年、月、日、小时、分钟和秒等信息修改计数器的值可以设置系统当前的时间和日期。

m0_73209701的博客 1369

泰山派嵌入式Linux学习笔记三、按键

if (read(fd,&event,sizeof(event))==sizeof(event))//read函数:从fd中期望读取sizeof(event)长度的值,存在event缓冲区里,并返回实际读取到的长度值,判断是否与event相等,确保单次读取到了完整的event结构体。if (event.type==1&&event.code==272&&event.value==1)//type=1是鼠标的按键事件,272是指左键,1是指按下。//定义一个名为event的input_event类型结构体。

2401_83627562的博客 375

嵌入式学习笔记——ARM

ARM 处理器提供 7 种工作模式,包括 1 种用户模式 和 6 种特权模式,特权模式可访问系统资源。模式包括 用户模式(USR) 运行普通程序,系统模式(SYS) 供 OS 运行,IRQ/FIQ 模式 处理中断,SVC 模式 处理软中断,ABT 模式 处理存储异常,UND 模式 处理未知指令。此外,ARM 具有 37 个 32 位寄存器,分为 通用寄存器(31 个) 和 状态寄存器(6 个),不同模式下寄存器使用方式不同。

zxjiaya的博客 2072

嵌入式驱动学习笔记

  驱动学习笔记 输入子系统概念介绍 /proc   /sys Module编译模板

weixin_34357267的博客 101

嵌入式技术基础与实践-学习笔记

《嵌入式技术基础与实践-基于STM32L431》第6版相关课程作业

Yu8Luo的博客 1673

泰山派嵌入式Linux学习笔记四、GPIO

摘要:RK3566的GPIO控制采用5个控制器(GPIO0-GPIO4),每个控制器管理32个引脚,通过"控制器号×32+端口号×8+索引号"计算引脚ID。通过/sys文件系统可导出/解除导出GPIO(如echo 19>/sys/class/gpio/export),并控制引脚方向(in/out)、电平(value)和中断模式(edge)。系统调用代码示例展示了如何通过文件操作实现GPIO控制,包括导出引脚、设置输出模式及电平状态。操作需root权限,通过操作/sys/class/

2401_83627562的博客 327

学习笔记 - 嵌入式

优先级定义:中断优先级寄存器 NVIC_IPRx,用来配置外部中断的优先级,IPR 宽度为 8bit,原则上每个外部中断可配置的优先级为 0~255,数值越小,优先级越高。ADC分辨率:ADC的分辨率通常以输出二进制数的位数表示,位数越多,分辨率越高,一般来说分辨率越高,转化时间越长,可配置的转换精度有:6位,8位,10位,12位。,采用主从模式(Master Slave)架构,是一种高速全双工的通信总线,常被用于ADC、LCD、FLASH等设备与MCU间,要求通讯速率较高的场合。它是一个支持设备的总线。

weixin_71860688的博客 1151

【软考之嵌入式系统设计师】学习笔记

云轩阁 287

嵌入式开发学习笔记汇总与嵌入式开发交流中心

嵌入式开发学习笔记汇总与嵌入式开发交流中心

dele 1106

蓝桥杯嵌入式学习笔记(一)

不得不说,随着学习时间增长,对一些知识的掌握逐渐加深是一件十分有成就感的事(╹ڡ╹ ),所以如果现在看不懂也没事,总有一天会越学越会的!可以看到,官方会在比赛时提供丰富的芯片资料,像客观题问的有关芯片的问题我们可以直接通过资料进行查询。,在我们使用芯片功能时可以很方便地查询对应外设在哪条时钟线上,从而方便对寄存器操作、初始化。这时看GPIO的电路原理图,通过学的电路知识也能更好理解框图的含义,拉高拉低,置0置1。可以直接用模板,里面的库已经添加好了,也可以自己新建模板。蓝桥杯嵌入式比赛用的板子是。

weixin_63669443的博客 2797
下一篇: 文件IO与标准IO及非阻塞IO(非阻塞转)
zhouxf_cn
博客等级 码龄14年 54粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值