树莓派开发
树莓派刷机
工具和软件
- 工具:USB读卡器+SD卡。
- 软件:Win32DiskImager。
步骤
- 打开软件: Win32DiskImager
- 点击文件夹并找到(网上自己下载):[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jZO3cxYg-1635508485092)(C:\Users\86150\Desktop\截图\屏幕截图 2021-08-09 220617.jpg)]
- 点击write刷机。
- 拔下SD卡,插入树莓派中
树莓派登录
串口登录
设备破解
- 默认情况下,树莓派的串口是和蓝牙连接的。
- 要使用串口用来数据通信,必须断开蓝牙连接
断开蓝牙
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9g1QKmtr-1635508485094)(C:\Users\86150\Desktop\截图\屏幕截图 2021-08-09 221905.jpg)]
启动树莓派
- 准备好上面的步骤之后,将SD卡插入树莓,接上电源启动。
- 右键我的的电脑(以win7为例,其它大同小异)->管理->设备管理器->端口(COM和LPT)** COM在Win系统里就是指的串口的端口。 如果没有这个,说明你的转换模块没有在运作,请检查对应驱动是否正确安装。 **
- 记下这里的端口号
- 远控软件新建一个连接,速度设置为115200,端口选择刚才的端口。
- 点击连接,等待终端出现文字,直到树莓派发出登录请求,到此成功。
- 默认账号:pi
默认密码:raspberry
网络登录
网络配置
-
串口登录状态下:输入命令
sudo nano (nano是文档编辑器) /etc/wpa_supplicant/wpa_supplicant.conf
-
在文件中添加无线网配置信息:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 country=CN network={ ssid="你的无线网名字" psk="密码" key_mgmt=WPA-PSK } network={ ssid="你的其他无线网名字" psk="密码" key_mgmt=WPA-PSK }
-
连接WiFi,用指令ifconfig显示或设置网络设备,此时是未连接的状态。
-
重启树莓派后才会连接。
-
固定树莓派的IP地址
- 输入指令:sudo nano /etc/rc.local
- 进入后在最后一行添加:ifconfig wlan0 192.168.xx.xx
网络配置
- 输入指令:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3ogNlYfN-1635508485096)(C:\Users\86150\Desktop\截图\屏幕截图 2021-08-09 231929.jpg)]
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O4vtrJHI-1635508485099)(C:\Users\86150\Desktop\截图\屏幕截图 2021-08-09 232118.jpg)]
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KcF8L8On-1635508485102)(C:\Users\86150\Desktop\截图\屏幕截图 2021-08-09 232146.jpg)]
图形登录
-
安装xrdp
sudo apt-get insall xrdp
vim的安装
默认的源是国外的,apt-get 安装会失败,需更新成国内的源。
-
输入指令:
sudo nano /etc/apt/sources.list
-
用#注释或直接删除原有的内容,新增下面内容:
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi #deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
-
保存并退出。
-
更新软件列表
sudo apt-get update
-
输入指令安装vim
sudo apt-get insall vim
window和树莓派文件共享
-
使用的软件是:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xSulWPY6-1635508485103)(C:\Users\86150\Desktop\截图\屏幕截图 2021-08-10 085459.jpg)]
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RSHsX5z4-1635508485106)(C:\Users\86150\Desktop\截图\屏幕截图 2021-08-10 085650.jpg)]
Linux库
库的类型
程序函数库可分为3种类型:静态函数库(static libraries)、共享函数库(shared libraries)、动态加载函数库(dynamically loaded libraries);
静态函数库
概念
-
静态函数库,是在程序执行前就加入到目标程序中去了 (一般来说习惯用“.a”作为文件的后缀);
-
优点:
①.静态库被打包到应用程序中加载速度快
②.发布程序无需提供静态库,因为已经在app中,移植方便 -
缺点:
①.链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。
②.更新、部署、发布麻烦。
静态库的制作
命名规则
静态库文件名的命名方式是“libxxx.a”,库名前加”lib”,后缀用”.a”,“xxx”为静态库名。
指令
- 先生成“.o“文件
gcc a.c b.c -c
-
将“.o”文件打包
ar rcs 静态库的名字 原材料ar rcs libtest.a a.o b.o
ar指令的参数
参数:
必要参数:
- -d 删除备存文件中的成员文件。
- -m 变更成员文件在备存文件中的次序。
- -p 显示备存文件中的成员文件内容。
- -q 将文件附加在备存文件末端。
- -r 将文件插入备存文件中。
- -t 显示备存文件中所包含的文件。
- -x 自备存文件中取出成员文件。
选项参数:
- a<成员文件> 将文件插入备存文件中指定的成员文件之后。
- b<成员文件> 将文件插入备存文件中指定的成员文件之前。
- c 建立备存文件。
- f 为避免过长的文件名不兼容于其他系统的ar指令指令,因此可利用此参数,截掉要放入备存文件中过长的成员文件名称。
- i<成员文件> 将文件插入备存文件中指定的成员文件之前。
- o 保留备存文件中文件的日期。
- s 若备存文件中包含了对象模式,可利用此参数建立备存文件的符号表。
- S 不产生符号表。
- u 只将日期较新文件插入备存文件中。
- v 程序执行时显示详细的信息。
- V 显示版本信息。
-
库的使用
gcc test.c -I ./include -L./lib -lmycalc -o app
-I(大写i):指定头文件的路径
-L: 指定库的路径
-l(小写L):指定库的名字(去掉lib和.a)
-o:指定生成的最终应用程序的名字
为什么要加-L呢?因为如果不指定库的路径,默认是在/usr/lib/目录下去找。加了-L优先在指定路径下找,如果找不到再去/usr/lib/下找;
动态函数库
概念
-
动态函数库同共享函数库是一个东西(在linux上叫共享对象库, 文件后缀是.so ,windows上叫动态加载函数库, 文件后缀是.dll),是在程序执行时(临时)由目标程序去调用;
-
优点:
①.链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序可以共用,节省内存
②.程序升级简单,因为app里面没有库的源代码,升级之后只要库的名字不变,函数名以及参数不变,只是实现做了优化,就能加载成功。 -
缺点:
①.加载速度比静态库慢
②.发布程序需要提供依赖的动态库
动态库制作
-
命名规则
动态库的命名方式与静态库类似,前缀相同,为“lib”,后缀变为“.so”。所以为“libmytime.so”
-
制作步骤
①.将源文件生成.o,需要加一个参数fpic
gcc a.c b.c -c -fpic
-fipc:fPIC选项用于编译阶段,在生成目标文件时就得使用该选项,以生成位置无关的代码。
②.将“.o”文件打包
gcc -shared a.o b.o -o libxxx.so
-share:生成 动态库
也可以将上面两步合为一步
gcc -shared -fpic a.c b.c -o libxxx.so
动态库在运行时需要配置环境变量
-
临时配置:在终端输入:
export LD_LIBRARY_PATH="动态库的路径"
可以写一个sh脚本,让它再其他终端下运行
-
永久配置:
②.系统级别:
/etc/profile,配置完成之后,重启计算机或者source /etc/profile
-