RasberryPi 3B+ 树莓派 初识---树莓派刷机全过程

本文详细介绍了作者购买树莓派3B+后的初次设置过程,包括SD卡刷机、串口配置、无线网络连接、SSH登录、更换源、VIM安装以及尝试图形化登录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于香橙派的学习暂时告一段落,从本节开始学习树莓派3B+!

我在亚马逊官网购买了3b+和壳子,安装完成后大概长这样:

(感觉的确像一台小型电脑主机了)

树莓派的引脚功能图

图参:树莓派3B+ 引脚图说明_树莓派3b+引脚图-优快云博客

树莓派的刷机

树莓派的刷机和香橙派的刷机类似:

  • 先将SD卡插入读卡器插入电脑:(有字的同面)

  • 打开SD Card Formatter,点击“refresh”再点击“format”格式化:

  • 打开Win32DiskImager,格式化SD卡:

映像文件选择:

直接在官网下载:Operating system images – Raspberry Pi

此处我选择了第一个,也就是带桌面的树莓派系统

设备选择:E盘

然后点击写入:

  • 将SD卡插入树莓派:

此时,连接上电源,并用HDMI线连接到显示屏理论上就可以看到树莓派开机的画面了,但是作为一名嵌入式工程师,不可能随身携带显示屏来操控树莓派,所以要学习使用串口的方式来连接) 

  •  使用CH340用串口的方式连接树莓派:

注意!在默认情况下,树莓派的串口是和蓝牙连接的,所以首先要想办法断开蓝牙连接,把串口用来数据通信!

参考:树莓派 3B/3B+/4B 的基本配置(保姆级新手教程)_树莓派3b手册_Grayson_Zheng的博客-优快云博客

  • 拔下刚刚插上的SD卡重新插回读卡器插回电脑
  • 打开SD卡对应的盘,找到“config.txt”,将里面的内容添加在文本最后:(这样就停止了蓝牙,解除了对串口的占用)
dtoverlay=pi3-miniuart-bt

  • 再找到“cmdline.txt”,将里面的内容完全替换成以下内容:(将串口作为系统默认的交互信息通道)
dwc_otg.lpm_enable=0 console=tty1 console=serial0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

  • 在根目录下新建一个文件,命名为“userconf.txt”,并输入如下内容:

(加上这个文件的目的是为了能正常登录树莓派,2022 年 4 月之前的版本都是自带这个文本文件的,可以正常用默认账户和密码登录树莓派。但是在2022 年 4 月之后的版本,官方把这个文件移除(据说是为了安全)

pi:$6$/4.VdYgDm7RJ0qM1$FwXCeQgDKkqrOU3RIRuDSKpauAbBvP11msq9X58c8Que2l1Dwq3vdJMgiZlQSbEXGaY5esVHGBNbCxKLVNqZW1
 
  • 配置完成,拔下SD卡重新插回树莓派
 将CH340的RX和TX分别接入树莓派物理引脚8和10:(还要共地)

(由于之前安装过了CH340的驱动,所以此时电脑可以直接识别)

然后打开MobaXterm,设置串口连接的信息:

点击 session -> serial -> serial port选择CH340对应的COM口 -> 波特率设置115200 -> 点击OK

 最后,启动树莓派的电源,并观察MobaXterm的连接界面:

可见,随着电源的启动,开始不断打印内核信息,直到最后跳出登录信息:

  • 使用账号密码登录树莓派 & 修改密码

账号:pi

密码:raspberry

然后使用以下命令重置密码,我在此处和之前香橙派一样就设置了一个数字“1”:

sudo passwd pi

 

账号:pi

新密码: 1

  • 配置网络 & 无线连接

输入“ifconfig”命令查看当前树莓派的网络IP:

此时发现没有IP地址,说明没有连接上。

 1. 输入以下指令: 

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

 2. 在空白处输入以下内容:  

country=CN //由于我现在不在中国所以没有加上这句话

network={
    ssid="your_wifi_name"
    psk="your_wifi_password"
}

​ 

 3. 然后输入CRTL+O保存 -> 回车 -> CRTL+X退出 

4. 输入以下命令:

sudo nano /etc/network/interfaces

5.  在空白处输入以下内容: 

4,5步很重要!!!一开始没有这两步就连不上,详情参考:

树莓派无线连接不上wifi(一次就好)_树莓派链接不上wifi-优快云博客

auto lo wlan0
 
iface lo inet loopback
iface eth0 inet dhcp
 
auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
 
wpa_conf /etc/wpa_supplicant/wpa_supplicant.conf

 

6. 然后输入CRTL+O保存 -> 回车 -> CRTL+X退出  

7. 最后输入sudo reboot重启,再输入ifconfig

如果此时还不行,可能是射频的问题或者国家的问题,可以参考以下链接的解决方式:

树莓派 3B/3B+/4B 的基本配置(保姆级新手教程)_树莓派3b手册_Grayson_Zheng的博客-优快云博客

 

固定IP的方法:修改`/etc/network/interfaces`文件:

将`iface wlan0 inet dhcp`修改为:

iface wlan0 inet static
address 192.168.1.111
netmask 255.255.255.0
gateway 192.168.1.1
  • address:期望固定的IP
  • netmask:子网掩码,局域网内任何IP和子网掩码相与的结果应该相同
  • gateway:路由器IP(即默认网关)的值,可以在windows cmd输入ipconfig查看"默认网关"

   

可见,连接成功!! 

  • 配置SSH登录

如果路由器在每次登录后都会分配新的IP地址,则这步需要固定IP,但是现在大部分路由器都会记住IP,所以我不需要这一步,固定IP的方法:

1. 运行以下代码:

sudo nano /etc/rc.local

2. 然后在最后“exit0”之前加上一句“ ifconfig wlan0 希望固定的IP地址 

无论是刚刚登录时还是在ifconfig时,都会显示树莓派的IP地址,根据经验,只要不刷机,就不会变。所以我树莓派的IP地址是192.168.2.26

然后需要打开ssh服务

1. 运行以下代码:

sudo raspi-config

2.  选择“Interface Options” -> “SSH” -> “Yes

 

3.  使用MobaXterm新开一个session,选择SSH

 4. 输入密码之后成功通过SSH远程登录:

  • 换源 & 更新

我现在在加拿大不受这个困扰,而且听说新版的系统不需要换源了,所以步骤1和2不需要了

1. 修改sources.list:

sudo nano /etc/apt/sources.list

 最上方的彩色的一串就是国外的源,用“#”注释掉并写上国内的源:

CTRL+O -> 回车 -> CTRL+X  

2.  修改raspi.list:

sudo nano /etc/apt/sources.list.d/raspi.list

 最上方的彩色的一串就是国外的源,用“#”注释掉并写上国内的源:

 

CTRL+O -> 回车 -> CTRL+X  

3. 更新软件源列表:

sudo apt-get update

  • 根分区扩展 

输入以下指令查看当前分区大小:

df -ah

此时我明明使用的是32G的卡,但是却只有几个G,显然没有完全使用

然后再次输入“sudo raspi-config ”进入控制面板:

(由于是SSH登录,控制面板也变得好看多了)

选择“Advanced Options” -> “Expand Filesystem” -> “OK

 

然后reboot之后再次运行“df -ah” :

 可见,此时dev/mmcblk0p2的 可用空间 从 82M 跳到了 24G,空间充足!

  • 安装和配置VIM

在这之前一直使用nano来打开文件实在是太不熟悉了,现在连上了网络还扩展了空间,可以尝试安装熟悉的VIM了:

sudo apt-get install vim

 至此,又可以使用熟悉的vi/vim指令来编辑文档和代码了!

使用图形的方式登录树莓派

在上节已经学习了如何使用串口和SSH来登录树莓派,本节学习如何使用图形的方式来登录树莓派:

  • 先在树莓派SSH界面输入“sudo apt-get install xrdp”:
  • 在Windows界面打开“远程桌面连接”, 输入树莓派IP地址点击连接:

  •  输入树莓派账号密码:

此时应该就可以连上了,但是我的一直卡在蓝屏,考虑到这个功能没啥用,就没有深究了,还是乖乖使用SSH吧!

### C语言中 `%c` 格式化参数类型不匹配问题解决方案 在C语言编程过程中,当使用 `printf` 或其他格式化函数时,如果指定的格式符与实际传递的参数类型不符,则会触发编译器警告。对于 `%c` 格式符而言,它期望接收的是单个字符类型的变量(即 `char` 类型),而不是整数或其他数据类型。 #### 警告原因分析 当程序尝试打印一个整数值却错误地使用了 `%c` 作为占位符时,会出现如下警告: - **Warning**: `format ‘%c’ expects argument of type ‘char’, but argument X has type ‘int’ [-Wformat=]` [^1] 这是因为 `%c` 预期接收到的数据是一个字节大小的字符 (`char`),而实际上传入了一个更大的整数类型 (`int`) 数据。这种情况下,虽然程序可能仍然能够运行并输出某些结果,但其行为未定义,可能导致不可预期的结果。 #### 正确处理方式 要解决上述问题,需确保提供给 `%c` 的确实是 `char` 类型或者可以安全转换成该类型的值: 1. 如果确实想打印字符而非数字编码对应的ASCII码表中的图形表示形式的话, 应修改代码使得真正意义上的字符被送至标准输出流。 2. 当意图展示某个特定范围内整数所代表的具体字母或符号形象时, 则应确认这些整数位于有效区间之内 (0~255),并且理解它们如何映射到相应字符集成员之上。 以下是两种常见修正方法的例子: #### 方法一:调整为正确的数据类型 将原本声明为 `int` 的变量更改为 `char` 类型,并赋合适的初始值: ```c // 错误示范 int letter = 'A'; // 这里实际上是合法语句因为'A'会被解释为代表65的一个常量表达式integer literal. printf("%c\n",letter); // 改正后的版本 char correctLetter='B'; printf("%c\n",correctLetter); ``` #### 方法二:强制类型转换 如果不改变原有变量定义的情况下也可以通过显式的类型转换来消除此警告消息: ```c int numValueOfChar = 67; printf("%c\n",(char)numValueOfChar ); ``` 这里 `(char)` 将整形变量 `numValueOfChar` 明确告知编译器我们希望将其视作字符对待再参与后续操作之中去. 以上任一种做法都可以有效地规避掉原始存在的潜在隐患同时让我们的源文件更加清晰易懂符合良好实践习惯的要求.[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值