0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

干货来喽!实用树莓派Linux编译指南

青山老竹农 来源:jf_82863998 作者:jf_82863998 2024-12-18 16:31 次阅读

通常情况下,模组对接的Linux协议是USB协议,模组通过USB插入Linux设备后可直接使用,系统会检测出设备的标识:PID VID。

然而实际运用中,时有新手朋友问:

Linux对新手用户实在不友好,有没有好的解决办法?

今天来分享一下我的私藏干货——树莓派Linux编译。编译好之后,开发板只需插到树莓派上连接电脑就可以直接用了,极其方便。

本文以树莓派为例,其他板子只要带Linux系统的,大体上也都可以按这个操作。

一、烧录镜像

1.1 烧录软件

建议用树莓派官方工具,可以直接设置添加SSH、树莓派在路由器后台的名字。

官方最新版下载地址:

https://www.raspberrypi.com/software/

wKgZO2dihiSASOeOAAMMNtBFK7E647.png

上方登录的用户名密码,也可以一次性设置。

1.2镜像文件的下载

1.2.1镜像文件下载地址

镜像文件,建议使用32位的,也可以使用64位的。

注意:如果想要使用可视化界面,下载镜像时请选择桌面版本的镜像文件,最好是带常用软件的版本,还有尽量使用32位的,64位的我没编译成功过。

镜像文件下载地址:

https://www.raspberrypi.com/software/operating-systems/

1.2.2 高速下载工具

如果下载进度慢,可以先下载一个motrix,然后把下载链接用它打开。

motrix下载地址:

https://motrix.app/zh-CN/

1.3 烧录过程

下载完成后选择使用自定义镜像,然后插SD卡,烧录就行。

wKgZPGdihjmAPEGaAAJE-E74bSI602.png

特别提醒:SD卡最好在32G及其以上,16G也行,但最好选择速度快一点的SD卡,因为烧录、写入,包括后面的编译整个系统,都是在SD卡上完成的。

二、远程控制

2.1 SSH方式

烧录完成后,SD卡会被分成两个区:

一个是无法打开的系统区,一个是可以打开的文件系统区。

如果你之前没有在官方烧写工具里打开SSH,需要用电脑打开那个文件系统区,新建一个文件:名字叫做SSH,不要加任何文件名后缀。

新建好文件以后,将内存卡插入树莓派中,路由器那接根网线给树莓派,上电开机,树莓派官方推荐电源为5V3A(注意:如果电源小于这个,你带的东西比较多还带个屏幕的话,会出现供电不稳导致的模组重启等现象)。

接下来,打开你的路由器管理后台,找到树莓派。如果上一步你设置了树莓派的名字,那么后台还是比较好找的。如果没设置的话,树莓派的默认名字为raspberry,root用户默认密码也为raspberry,如果长期用树莓派,建议分配一个静态IP。

我这边大概的管理界面如下:

wKgZO2dihk2AQDM0AAD9JHQZYKQ513.png

Xshell和Xftp下载地址:

www.xshell.com

打开Xshell,新建登录界面,IP选择你在路由器后台看到的树莓派的IP,用户名和密码都是你之前用镜像烧录软件设置的密码。

如果没有设置,用户名为root,密码为raspberry,如果实在登录不上,建议重新烧录,重新设置(Xshell和Xftp是配套软件,建议一次都下载上)。

登录上以后,建议使用sudo passwd命令,修改root用户密码,修改成你自己能记得住的。

Linux常见命令 :

wKgZO2dihlyABpOrAABP43UWFU0262.png


2.1.1 VNC远程桌面

如果不太喜欢命令行方式,也可以使用VNC远程桌面(类似于PC上的向日葵)。

注:如果想要使用VNC,当时下载镜像那一步的时候就要选择桌面版本的镜像文件,最好是带常用软件的版本。

PC端VNC下载:

https://www.realvnc.com/

三、直插屏幕式控制

你插个屏幕过去,所有的输入输出都使用键盘和鼠标完成也可以(注:如果想要使用屏幕,当时下载镜像那一步的时候就要选择桌面版本的镜像文件,最好是带常用软件的版本)。

优点嘛就是可视化,操作文件夹比较方便。

缺点就是在你图形化修改驱动文件的时候,可能会遇到驱动文件是只读文件,修改不成功,还得用命令行进root用户赋予文件/文件夹777权限(chmod -R 777linux)。

四、树莓派换源

因为树莓派默认使用的国外的源,下载东西比较慢,编译代码时候需要的各种工具和包管理,所以可以使用清华/阿里/中科大等镜像源。

使用SSH的用户,在命令行里输入uname -m;使用VNC和直插桌面的用户,打开命令行终端,一样输入uname -m。

然后按照这篇指导来:

https://mirrors.tuna.tsinghua.edu.cn/help/raspbian/

换源好了以后,可以尝试输入:

wKgZO2dihm6AauvRAAAf658BTU0899.png

换源可能遇到的问题:

如果出现error,说什么key什么找不到的,把报错里key后面那串数字复制出来,将这篇文章里的命令最后的那个key换成你的,如果报了多个key,那就设置多次。

五、编译内核

编译分为本地编译和交叉编译,这两种方式都可以。本地编译就是树莓派自己编译自己,交叉编译就是用另一台比树莓派性能强大的机器(比如自己的电脑)去编译驱动,编译完进行一个内核替换,将编译好的内核替换到SD卡上,然后SD卡插回树莓派。

本文仅讲解本地编译方式:

5.1 本地编译

本地编译的好处是不需要太多的命令,对新手玩家友好。

缺点就是受限于树莓派孱弱的性能,编译起来速度慢的要死。4个内核全开的话编译一次大概一两个小时。如果使用的默认编译指令,只开一个核,我试过一次,大概4个小时多。

5.1.1 下载Linux内核源码

打开命令行,进入你想要的目录,比如桌面或者dowon,新建一个目录也行,记得不要写中文,进入后用下面这条命令下载树莓派的最新内核。

wKgZO2dihn6AG9j-AAATQDax1fc480.png

-depth=1的意思类似于浅拷贝,只clone当前项目下的代码,没有历史文件的修改记录。常见的git clone其实是深度拷贝,带了从init这个仓库以后的所有操作。

我们只是学习/编译当前版本内核不需要看那些东西,全部拷贝过来的话,大概3G多,不走代理下载到猴年马月去了,即使走免费的代理,大多数也有最大仓库2G的限制。

原始仓库在下面这里,直接clone这个仓库,慢的一批,所以走了热心群友提供的代理路径,详细命令在后面,这里就不说了。

树莓派Linux仓库:

https://github.com/raspberrypi/linux

5.1.2 修改我们驱动对应的文件

如果使用的是SSH方式命令行修改,可以使用nano编辑器修改文件,记得先输入su进入超级用户,要不然修改可能会不成功。(注:大学接触过Linux的话,应该知道VI编辑器和VIM编辑器,都可以用,nano编辑器方便一点。)

具体命令如下:

wKgZPGdiho2ALgjuAAAOc7OSIZc543.png


5.1.2.1 option.c文件的修改

sudo nano drivers/usb/serial/option.c

--使用nano编辑器进入option.c文件

切记:进入文件后,上下翻页不要用鼠标,用键盘的上下按键!使用鼠标会导致对应文件里输入一堆^H^L。

option.c文件里需要修改四处:

第一处:

static const struct usb_device_id option_ids[]函数的"{"下面加一句。

wKgZO2dihp2Ac76XAABmAv_FPNA998.png

第二处:

static struct usb_serial_driver option_lport_device函数,

最后一行,.resume = usb_wwan_resume,下面加一行。

wKgZO2dihquADWEOAAAfvgdUMaU139.png

第三处:

Struct usb_interface_descriptor那一行下面,加一句。

wKgZO2dihrmAG33aAAAOSSuk5Ls440.png

第四处:

If (iface_desc->bINterfaceClass一直到return -ENODEV;

这句话下面加这几句:

wKgZO2dihsqAdUW-AAHaYRRxP2Y275.png

修改完成后,使用ctrl+o保存修改,ctrl+x退出文件编辑器。

5.1.2.2 usb_wwan.c文件的修改

一样使用:

sudo nano drivers/usb/serial/usb_wwan.c

--使用nano编辑器打开usb_wwan.c文件。

这个文件修改的地方只有一处:

static struct urb *usb_wwan_setup_urb函数,

在if (intfdata->use_zlp到PACKET;行后面,

加上如下几句话:

wKgZO2dihtuATEpQAAIeQ2nEekk709.png

修改完成后,使用ctrl+o保存修改,ctrl+x退出文件编辑器。

至此驱动修改完成,可以进入内核编辑界面了。主要是为了配置些没有默认打开的功能,比如ECM/PPP。

5.1.3 编译前非代码修改部分的准备工作

首先安装Git和构建依赖项:

wKgZO2dihuyAX4STAAAMk5Bn1FE946.png

看清你手上的树莓派版本以及下载的系统版本为32位还是64位选择下面对应的命令。

如果已经在Linux目录下了,就不用第一句cd linux了。

1)适用于树莓派1、零和零W以及树莓派计算模组1,默认(仅限 32 位)构建配置:

wKgZO2dihvqAU5qpAAARoNqDfuI174.png

2)适用于树莓派2、3、3+ 和零2W,以及树莓派计算模组 3 和 3+,默认32位构建配置:

wKgZO2dihweAVrcPAAAS3hcxmJo405.png

3)适用于树莓派4和400,以及树莓派计算模组4,默认的32位构建配置:

wKgZPGdihxOAXkc8AAASTmJOjzI508.png

4)适用于树莓派3、3+、4、400和零2W以及树莓派计算模组 3、3+ 和4,默认64位构建配置:

wKgZPGdihx-Aef65AAASFxXmqMk020.png

准备完成以后,就可以愉快地进入内核配置界面了。

如果上述指令任意一条指令报错,可自己百度解决,或咨询合宙FAE。

5.1.4 内核配置

就在Linux这个路径下,输入:

wKgZO2dihyqAZW4PAAAH7o5tUBY460.png

进入内核配置界面,如果进不去,先确定下自己当前用户是否是超级用户。如果不是,输入su进入超级用户;然后再config。

进入内核配置界面,按下"/",可以搜索想要改的地方。比如搜索RNDIS时,如果相关配置项很多,这个界面下可以滚动鼠标查看,确保搜索结果中与RNDIS相关的选项状态为y或m:

wKgZPGdihzqAcesYAAK4NtsXwqc916.png

下面有写相关配置项的路径:

wKgZO2dih0iAE53ZAADj2ps1acA874.png

ECM/PPP/CMUX同理,CMUX需要注意的是,搜索的是N_GSM:

wKgZO2dih1iAdMCBAAE6ugb0DTU306.pngwKgZPGdih2WAfr0jAANHf7qniYM236.png

可以选择一个项目配置完就按左右选择Save保存下配置,所有选项勾选完毕,点击键盘的左右按钮,选择Exit,直到退出到弹出对话框问你是否保存,选择yes保存完毕,就结束了所有配置工作。

5.1.5 构建内核

生成并安装内核、模组和设备树blob。此步骤可能需要很长时间,具体取决于所使用的树莓派模型。

对于32位内核:

wKgZO2dih3aAe9xbAABCjXOWMLI754.png

对于64位内核:

wKgZPGdih4OAK2BTAABGc9YrJHk359.png

注1:第一句make后面的V=1为编译时候看的日志等级为1级,日志最多为S级,不加这个V=1可能看不到你修改的驱动哪里有问题;

注2:-j4为启动4个内核一起编译。

记得给树莓派拿个风扇怼着散热,会很烫。

wKgZO2dih5WAMhEgABHPQvrJ-xo840.png

所有的项目完成以后,现在重新启动,你的树莓派应该运行你新编译的内核!

wKgZO2dih6OAZTQnAAAILaFE7Zo997.png

给树莓派插入Air724/Air780E/1802/1603系列的板子,开机以后,输入:

wKgZO2dih66AE4_BAAAQKYKd1dU621.png

就能看见三个端口

wKgZPGdih8iAPwaPAAj4I6Og6Rk645.png

注1:这三个端口是Linux自己分配的,端口号可能不固定,如果想要固定端口号,可以使用这个链接里提到的方案:

https://doc.openluat.com/article/2080/0

注2:618可能会出现不叫ttyUSB的端口,可能叫ttyACM,也有可能是其他:

wKgZO2dih96AFdykAAqc3k_nrBo520.png

Linux下的串口调试工具很多,最知名的就是minicom,简单使用方式在下面:

wKgZO2dih-2Acoo5AAAOCF625Rk631.png

我个人觉得不好用,所以我用的是我们自己写的一个串口工具,使用方法如下:

https://doc.openluat.com/article/645/0

wKgZPGdih_-AJqdyAAAIRrtEolY726.png

编译完成后,在目录下会生成一个at.out的可执行文件,使用示例:

wKgZPGdiiAaAYtDFAAAUfN4sjBo281.png


5.2 编译完可能出现的问题

5.2.1 找不到端口

如果lsusb可以显示出来对应模组的PID VID,但是找不到那几个虚拟串口。

解决方法:发送命令

1)8910系列

Air724UG/720UH/720UG/722UG/820UG/600UG…

发这个:

wKgZO2diiBeALCbrAAAOzYXRZFI151.png


2)618系列

Air780E/780EX/780EG/600E/780EA/600EA/700E…

发这个:

wKgZPGdiiCWAA-38AAARKSB6fQo868.png

然后再去找下端口,如果能找到,则证明PID VID修改未成功,重新从5.1.1开始做起。

如果lsusb找不到对应端口,先确定下模组开机vdd_ext有没有电压。如果没有,powerkey接地,vbat供电4V;如果有,建议给vbus DM DP gnd四个飞线出来,接一根USB线给Win10电脑。模组开机以后,看看Win10电脑上有没有三个端口。

5.2.2 端口显示异常

lsusb显示的端口为17d1 0001,并非19d1 0001。

解决方法:

17D1 0001为618模组进入boot后Linux显示的端口号,通常情况下,重新给618模组开机一次即可解决。

如果开机后依旧显示17D1 0001端口,则证明vdd_ext引脚和uboot引脚短接在了一起,或者uboot引脚接入了其他高电平引脚如3.3V或者vbat引脚。

---

树莓派Linux编译及系列模组的使用方法,就先分享到这里了~

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11294

    浏览量

    209343
  • 编译
    +关注

    关注

    0

    文章

    657

    浏览量

    32852
  • 树莓派
    +关注

    关注

    116

    文章

    1706

    浏览量

    105610
收藏 人收藏

    评论

    相关推荐

    实用树莓Linux编译指南,打工人必备!

    不友好,有没有好的解决办法? 今天来分享一下我的私藏干货——树莓Linux编译编译好之后,开
    的头像 发表于 12-17 16:19 557次阅读
    实用<b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>Linux</b><b class='flag-5'>编译</b><b class='flag-5'>指南</b>,打工人必备!

    树莓传感器使用方法 树莓 Raspberry Pi 4优缺点

    树莓传感器使用方法 树莓(Raspberry Pi)是一款由英国树莓基金会开发的小型单板计
    的头像 发表于 12-06 10:35 344次阅读

    ARM开发板与树莓的比较

    ARM开发板和树莓都是基于ARM架构的单板计算机,它们在教育、工业控制、物联网等领域有着广泛的应用。 硬件配置 ARM开发板和树莓的硬件配置各有特点,具体取决于不同的型号和制造商。
    的头像 发表于 11-05 11:11 406次阅读

    树莓gpio有什么用,树莓gpio接口及编程方法

    一、树莓GPIO的用途 树莓(Raspberry Pi)是一款小巧、功能强大的单板计算机,广泛应用于编程教育、物联网项目、家庭媒体中心等领域。GPIO(General Purpos
    的头像 发表于 10-22 18:09 781次阅读

    什么是树莓树莓是什么架构的

    什么是树莓 树莓(Raspberry Pi,简写为RPi,别名为RasPi/RPI)是由英国“Raspberry Pi 慈善基金会”开发的一款为学习计算机编程教育而设计的微型电脑。
    的头像 发表于 10-22 17:33 790次阅读

    树莓网关:物联网应用的新标杆

    什么是树莓树莓(Raspberry Pi)是一种基于Linux的小型单板计算机,由英国的树莓
    的头像 发表于 10-09 16:44 291次阅读
    类<b class='flag-5'>树莓</b><b class='flag-5'>派</b>网关:物联网应用的新标杆

    树莓和51单片机哪个有优势

    是一款由英国树莓基金会开发的信用卡大小的单板计算机。自2012年推出以来,树莓已经发展出多个版本,包括A、B、2、3、4等型号。树莓
    的头像 发表于 09-02 09:04 792次阅读

    树莓和单片机的优缺点是什么

    (Raspberry Pi) 优点: 强大的处理能力 :树莓配备了高性能的CPU和GPU,可以运行复杂的操作系统,如Linux和Windows 10 IoT Core。 丰富的扩展性 :通过GPIO(通用输入输出
    的头像 发表于 08-30 18:21 1619次阅读

    树莓的功能用途是什么

    树莓(Raspberry Pi)是一款由英国树莓基金会研发的信用卡大小的单板计算机,自2012年推出以来,已经发展出多个型号和版本。树莓
    的头像 发表于 08-30 18:01 2561次阅读

    树莓是x86还是arm

    树莓(Raspberry Pi)是一款由英国树莓基金会(Raspberry Pi Foundation)开发的微型计算机。它基于ARM架构,而非x86架构。 一、
    的头像 发表于 08-30 15:42 971次阅读

    树莓装ubuntu和raspbian哪个更好

    版本,包括桌面版、服务器版和物联网版等,适用于各种场景。 Raspbian是专为树莓开发的Linux发行版,由树莓
    的头像 发表于 08-30 15:41 1277次阅读

    linux开发板与树莓的区别

    定义和用途 Linux开发板:Linux开发板是一种基于Linux操作系统的嵌入式开发板,通常用于工业自动化、物联网、智能家居等领域。 树莓
    的头像 发表于 08-30 15:34 938次阅读

    新手入门如何选择Arduino与树莓

    树莓2的主频速度和内存量两个主要方面都远高于Arduino。树莓可以被看作一台完全独立的计算机,可以直接运行Linux和Windows
    发表于 04-28 14:56 618次阅读
    新手入门如何选择Arduino与<b class='flag-5'>树莓</b><b class='flag-5'>派</b>?

    树莓主板如何连接电脑

    连接树莓派到电脑是一个非常有用的功能,它可以让我们在电脑上进行树莓的操作和管理。本文将详细介绍如何连接树莓主板到电脑。我会从准备工作开始
    的头像 发表于 01-07 15:40 1941次阅读

    基于树莓的环境监测系统

    作为环境监测系统的核心 树莓是一款低成本的单片机计算机,支持各种操作系统,如Linux等。它具有强大的处理能力和丰富的输入输出接口,使得它成为一个理想的环境监测系统的核心。树莓
    的头像 发表于 01-04 15:15 2534次阅读