嵌入式linux/鸿蒙开发板(IMX6ULL)开发流程(三)

文章目录

7. IMX6ULL开发板初次操作

7.1 100ask_imx6ull开发板硬件资源简介

7.1.1 100ask imx6ull mini开发板

在这里插入图片描述在这里插入图片描述

7.2 100ask_imx6ull开发板软件资源简介

7.2.1 开发环境

在这里插入图片描述

7.2.2 核心软件

在这里插入图片描述

7.2.3 文件系统

在这里插入图片描述

7.2.4 各模块的详细内容
在这里插入图片描述在这里插入图片描述

7.3 启动方式选择

板子上的红色拨码开关用来设置启动方式,支持这3种方式:EMMC启动、SD卡启动、USB烧写。
板子背后画有一个表格,表示这3种方式如何设置。
表格如下:
在这里插入图片描述

这3种启动方式的设置示意图如下:
在这里插入图片描述

注意:设置为USB启动时,不能插上SD卡、TF卡;上电之后才可以插卡。
刚出厂的板子在EMMC上烧写了系统,你可以设置为EMMC启动方式。

7.4 串口连接

在后面的操作里,都是通过串口与板子进行“交流”。串口是串行接口的简称,是指数据一位一位地顺序传送,其特点是通信线路简单。

7.4.1 连接串口线和电源线、配置串口工具

如下图所示将串口线与电脑、板子连接,开发板插上电源。

在这里插入图片描述

其中特别需要注意的几点:
a) 板子的启动选择拨到正确的启动方式,保证该启动方式里面有系统可以运行;
b) 板子如图所示插上配套的电源到电源接口,电源开关暂时不用打开;

7.4.2 安装USB串口模块驱动

接好micro usb数据线后,Windows会自动安装驱动(安装可能比较慢,等一分钟左右)。打开电脑的“设备管理器”,在“端口 (COM和LPT)”项下,可以看到如下图中的“(COM21)”。这里的“COM21”可能与你电脑上的不一样,记住你电脑显示的数字。

在这里插入图片描述

如果电脑没有显示出端口号,就需要手动安装驱动,从驱动精灵官网(www.drivergenius.com)下载一个驱动精灵,安装、运行、检测,会自动安装上串口驱动。

7.4.3 使用MobaXterm软件打开串口

打开MobaXterm,点击左上角的“Session”,在弹出的界面选中“Serial”,如下图所示选择端口号(前面设备管理器显示的端口号COM21)、波特率(Speed 115200)、流控(Flow Control: none),最后点击“OK”即可。步骤如下图所示。
注意:流控(Flow Control)一定要选择none,否则你将无法在MobaXterm中向串口输入数据。

随后显示一个黑色的窗口, 此时打开板子的电源开关,将收到板子串口发过来的数据,如下图所示。
在这里插入图片描述在这里插入图片描述

7.4.4 开发板登录名是root,无需密码

在串口看到“imx6ull login:”时,输入“root”并回车即可,如下图所示:

在这里插入图片描述

7.5 通过串口操作开发板

在串口看到“imx6ull login:”这类登录的提示信息时,输入“root”并回车即可,然后就可以执行各种Linux命令了,如下图所示:
在这里插入图片描述

7.6 使用MobaXterm远程登录开发板

只要开发板上有sshd服务,那么就像远程访问Ubuntu一样,也可以使用MobaXterm远程登录开发板,使用FileZilla连接开发板、互传文件。
假设开发板的IP是192.168.1.123,运行MobaXterm后,如下建立Session:
在这里插入图片描述

按上图操作后,在MobaXterm左侧就可以看到这项,双击它就可以登录Ubuntu,然后就可以执行各种Linux命令了:
在这里插入图片描述

7.7 使用FileZilla在Windows和开发板之间传文件

双击打开FileZilla后,按下图操作:
在这里插入图片描述

在Filezilla中,左边是Windows文件,右边是开发板的文件,如下图:

在这里插入图片描述

7.8 开发板挂载Ubuntu的NFS目录

什么是NSF协议?
NFS实现了一个跨越网络的文件访问功能,如下图可以简要说明其原理。其整个架构为Client-Server架构,客户端和服务端通过RPC协议进行通信,RPC协议可以简单的理解为一个基于TCP的应用层协议,它简化命令和数据的传输。
NFS最大的特点是将服务端的文件系统目录树映射到客户端,而在客户端访问该目录树与访问本地文件系统没有任何差别,客户端并不知道这个文件系统目录树是本地的还是远在另外一台服务器。

在这里插入图片描述

我们为什么要挂载ubuntu的nfs目录?
我们有些时候需要多次调试开发板文件系统内的某个应用程序,这就需要多次进行编译拷贝等操作,所以我们在前期进行调试时可以直接让开发板使用ubuntu的nfs目录下文件系统来进行远程调试,用以提高调试效率,加快研发速度。

7.8.1 确定ubuntu的网卡和IP

开发板要想访问Ubuntu,要先确定ubuntu的桥接网卡获取到的IP,在Ubuntu终端下使用ifconfig命令来查看桥接模式获取到的网卡。
在这里插入图片描述

如上图可以看到桥接网卡的IP地址为192.168.5.11 ,这里的IP地址配置是参考了 前面 《第四章 使用USB网卡直连配置网络》设置的桥接网卡IP地址。

7.8.2 在开发板上执行mount nfs命令

ubuntu的IP是192.168.5.11,确保开发板能ping通ubuntu后,在开发板上执行以下命令挂载NFS:

mount -t nfs -o nolock,vers=3 192.168.5.11:/home/book/nfs_rootfs /mnt

mount命令用来挂载各种支持的文件系统协议到某个目录下。
mount成功之后,开发板在/mnt目录下读写文件时,实际上访问的就是Ubuntu中的/home/book/nfs_rootfs目录,所以开发板和Ubuntu之间通过NFS可以很方便地共享文件。
在开发过程中,在Ubuntu中编译好程序后放入/home/book/nfs_rootfs目录,开发板mount nfs后就可以直接使用/mnt下的文件。

8. PC和开发板之间传输文件

8.1 传输文件的多种方法

在嵌入式开发中,涉及交叉编译:在PC上编译,在开发板上运行。所以就涉及PC和开发板之间的文件传输,方法有多种:网络传输、串口传输、USB传输,当然,还有最笨的方法:U盘拷贝。
一般的日常开发流程为:
a. 在Windows上阅读修改代码,然后通过FileZilla把代码传到VMWare中的Ubuntu;
b. 在Ubuntu上编译程序;
c. 把程序下载到开发板上,运行验证,
d. 在Windows下通过串口操作开发板。

所以在Windows、Ubuntu、开发板三者间,两两之间都存在文件的传输。

8.2 通过USB给开发板传文件

Windows使用串口跟开发板传输文件,虽然简单,但是传输速度太低。
使用后面章节介绍的网络服务传输文件,特别是使用NFS,是在开发过程中极力推荐的。
但是,如果只是想简单地更新系统,或是简单地上传文件给开发板,可以使用我们的烧写工具:100ask_imx6ull_flashing_tool。

8.3 安装网络服务

在嵌入式开发中,网络服务带来了很多便利,特别是Ubuntu上的NFS服务。使用NFS服务,开发板可以挂载Ubuntu上的某个目录,假设开发板把Ubuntu上的/home/book目录挂载到自己的/mnt目录,那么在开发过程中,可以如此操作:
a. 在Ubuntu上的/home/book/abc目录中编译程序
b. 开发板可以直接运行/mnt/abc下的程序
在Ubuntu上编译程序,开发板可以立刻执行程序,免去了上传、下载等等繁琐的操作。

当然,网络服务不仅仅有NFS,还有TFTP、SSH等服务。如果只是传输文件,可以使用TFTP、SSH等服务,比如:
a. 在Ubuntu启动TFTP服务,开发板通过tftp命令和Ubuntu互传文件;
b. 在Windows启动TFTP服务,开发板通过tftp命令和Windows互传文件;
c. 在开发板上启动SSH服务,Windows通过FileZilla登录开发板,互传文件。
上述场景各有其存在的道理:
如果开发板没安装SSH服务,那么就可以通过tftp命令使用Ubuntu或Windows的TFTP服务。
如果开发板安装了SSH服务,那么使用FileZilla传输文件时是完全的GUI操作,非常方便。
开发、调试过程使用Ubuntu的NFS服务,这是最方便的。

NFS、TFTP、SSH等服务,都是基于网络的。开发板可以使用网线和电脑相连,也可以使用USB OTG线与电脑相连,后者通过虚拟的USB网卡使用网络。
使用网线,还是使用USB OTG线?有网卡、有网线就用网线,没有再选择USB OTG线。

8.3.1 在Ubuntu中安装、配置NFS

如果你使用的是我们提供的Ubuntu,那么已经安装好了NFS服务。查看一下/etc/export的内容,就知道开发板可以挂载哪一个目录。如果该文件中没有指定目录,请继续往下看。

如果你的Ubuntu未安装NFS服务,那么在确保Ubuntu可以上网的前提下,执行以下命令:

sudo apt-get install nfs-kernel-server

注意:必须要保证Ubuntu可以上网。

然后,还得修改/etc/exports,添加类似以下的内容,下面的例子里允许开发板通过NFS访问Ubuntu的/home/book目录:

/home/book   *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)

最后,重启NFS服务,在Ubuntu上执行以下命令:

sudo /etc/init.d/nfs-kernel-server restart

可以在Ubuntu上通过NFS挂载自己,验证一下NFS可用:

sudo  mount  -t  nfs  -o  nolock,vers=3  127.0.0.1:/home/book   /mnt
ls  /mnt

再次重申:NFS是一种网络服务,开发板可以通过网线连接Ubuntu来使用NFS服务;甚至也可以通过USB OTG线连接Ubuntu,通过虚拟的USB网卡使用NFS服务。

8.3.2 Ubuntu安装TFTP服务

在Ubuntu中执行以下命令安装TFTP服务:

book@100ask:~$ sudo apt-get install tftp-hpa tftpd-hpa

然后,创建TFTP服务器工作目录,并打开TFTP服务配置文件,如下:

book@100ask:~$ mkdir  -p  /home/book/tftpboot
book@100ask:~$ sudo chmod 777 /home/book/tftpboot
book@100ask:~$ sudo vim /etc/default/tftpd-hpa

在配置文件/etc/default/tftpd-hpa中,添加以下字段:

TFTP_DIRECTORY="/home/book/tftpboot"
TFTP_OPTIONS="-l  -c  -s"

最后,重启TFTP服务:

book@100ask:~$ sudo service tftpd-hpa restart

查看tftp服务是否在运行,运行如下命令,即可查看是否在后台运行。

book@100ask:~$ ps -aux | grep “tftp”

在这里插入图片描述

8.3.3 在Windows安装TFTP服务

Windows上的TFTP服务由一个应用程序tftpd64提供,下载后双击运行,再做些设置即可。tftpd64的前身是tftpd32,它是32位的程序。对于64位电脑,请使用tftpd64。
tftpd64的官网为:请点击,建议下载“portable edition”版本,无需安装直接运行。官网不好打开的话,直接百度搜“tftpd64”即可,它是免费软件。
tftpd64的使用非常简单,运行后只需要设置3步:
a. 选择目录(开发板将从这个目录读、写文件)
b. 通过IP选择网卡
有些电脑有多个网卡,选择哪个网卡?使用VMware桥接网络时请参考《VMware桥接网络设置》。
在这里插入图片描述

c. 设置防火墙,直接关闭防火墙;或是允许tftpsever使用网络:
对于Windows 10可以按下图操作,对于其他操作系统,请自行百度:
在这里插入图片描述

8.4 使用网络服务传输文件

8.4.1 开发板挂载Ubuntu的NFS目录

开发板和Ubuntu之间网络互通之后,就可以在两者之间传输文件了。
开发板上不一定安装有FTP服务、SSH等服务,所以不一定能使用FTP等工具登录开发板。
但是开发板的系统一般都自带mount命令,并且支持NFS文件系统。所以可以在开发板上执行mount命令挂载Ubuntu的某个目录。这样就可以在开发板和Ubuntu之间传文件了。
开发板使用NFS挂载Ubuntu的前提是:Ubuntu中已经安装了NFS服务,并且在/etc/exports中配置了某个目录供挂载。
使用桥接网络时,确保开发板可以ping通Ubuntu后,就可以通过NFS挂载Ubuntu中的某个目录。
哪些目录呢?请查看Ubuntu的/etc/exports文件。

如果你使用的是VMware桥接方式,假设Ubuntu IP为192.168.1.100,在开发板上执行以下命令:

[root@imx6ull:~]# mount -t nfs -o nolock,vers=3 192.168.1.100:/home/book/nfs_rootfs /mnt
[root@imx6ull:~]# cp  /mnt/hello  ./hello

如果一切正常,你可以在Ubuntu上把文件放到/home/book/nfs_rootfs目录中,在开发板上可以从/mnt目录中访问该文件。

8.4.2 开发板通过tftp传输Ubuntu文件

8.4.2.1 在开发板上使用tftp命令下载文件

首先确保你已经将要下载的文件上传至Ubuntu系统中tftp服务的目录内,如下图所示我的tftp服务目录内有zImage 100ask_imx6ull-14x14.dtb两个文件,我的Ubuntu主机IP地址为192.168.1.123。
在这里插入图片描述

比如我要下载Ubuntu服务器下的zImage 文件,则在开发板上执行如下命令。

[root@imx6ull:~]# tftp  -g  -r  zImage  192.168.1.123

下载后的文件如下图所示。
在这里插入图片描述

8.4.2.2 在开发板上使用tftp命令上传文件

比如我们现在开发板家目录下创建一个1.txt 的文本文件,然后写入111111…. :
在这里插入图片描述在这里插入图片描述

然后在开发板上执行如下命令上传此文件到Ubuntu 服务器的tftp服务目录下。

[root@imx6ull:~]# tftp -p -l 1.txt  192.168.1.123

此时我们查看Ubuntu服务器的tftp服务目录下,即可看到之前在开发板上创建的1.txt 。

在这里插入图片描述

8.4.3 在Windows上通过FileZilla和开发板传输文件

Windows和开发板之间可以通过TFTP服务,或是SSH服务传输文件。前者需要在开发板上输入tftp命令,后者可以在纯GUI界面操作。
100ASK_IMX6ULL自带的Linux系统中,已经安装并开启了SSH服务,所以只要网络联通,就可以通过FileZilla和开发板传输文件。
注意:在开发过程中,使用NFS是最方便的。

8.4.3.1 确保Windows和开发板之间网络联通

假设Windows和开发板之间网络已经联通,可以通过下列方法确认。

  1. 确定开发板IP,假设为192.168.1.100:
    使用串口连接开发板,执行ifconfig命令查看或是配置IP,如下图所示:
    在这里插入图片描述

  2. 在Windows命令行ping开发板,确保网络联通:
    启动Windows命令行,执行 ping 192.168.1.100,如果下图所示:
    在这里插入图片描述

8.4.3.2 启动FileZilla连接开发板

在FileZilla中输入开发板的IP,输入用户名root,输入端口号22,就可以回车连接开发板了,如下图:
在这里插入图片描述

第一次连接开发板时,会有如下提示:
在这里插入图片描述

连接成功后,就可以直接拖动文件进行传输了:

在这里插入图片描述

9.编程前的准备工作

万事开头难,能够给开发板上编译的第1个APP、第1个驱动,并运行起来,就算成功搭好环境了。
给PC机编译程序时用的命令是:

gcc  -o  hello  hello.c

给开发板编译程序时用的命令类似下述命令(不同的开发板gcc的前缀可能不同):

arm-linux-gcc  -o  hello  hello.c

所以,在给开发板编译程序之前,需要先获得源码(录制视频过程中编写的APP和驱动程序的源码用git命令下载,内核源码和工具链用repo命令下载),再安装交叉编译工具链,就是arm-linux-gcc这类工具。

什么是Git?


Git由Linus Torvalds在2005年创建,用于Linux内核的开发,其他内核开发人员也为它的初始开发做出了贡献。Git是一个免费和开源的 分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有内容。Git 和其它版本控制系统(包括 Subversion 和近似工具)的主要差别在于 Git 对待数据的方法。 从概念上来说,其它大部分系统以文件变更列表的方式存储信息,这类系统(CVS、Subversion、Perforce、Bazaar 等等) 将它们存储的信息看作是一组基本文件和每个文件随时间逐步累积的差异 (它们通常称作 基于差异(delta-based) 的版本控制)。
参考引用: 请点击

我们为什么要用Git来管理源码?


Git的开发流程和代码管理方式适用于国内外各大中小企业,Git也适用于个人发布自己程序源码以及博客网站,同时在文件代码管理上可以很方便的获取同步最新,多人协作开发,以及查看历史提交,集成编译等。

什么是repo?


repo是Git之上构建的工具。Repo帮助管理许多Git存储库,将其上载到修订控制系统,并自动执行部分开发工作流程。Repo并不是要取代Git,而只是为了使其更易于使用Git。repo命令是可执行的Python脚本,您可以将其放置在路径中的任何位置。

在这里插入图片描述

9.1 使用GIT下载教程源码

下载到Windows中,再用FileZilla上传到Ubuntu;也可以在Ubuntu下用GIT直接下载。
在Windows下启动“Git bash”后执行以下命令:

$ git clone https://e.coding.net/weidongshan/01_all_series_quickstart.git

在Ubuntu下打开终端后,可以直接执行如下命令。

book@100ask:~$ git clone https://e.coding.net/weidongshan/01_all_series_quickstart.git

下载成功后,将会得到一个名为“01_all_series_quickstart”的目录,里面含有源码,操作示例如下图所示。
在这里插入图片描述

9.2 使用repo获取内核及工具链等

源码的获取方法有2种:本地拷贝、在线下载。这2种方法请选择1种,不要同时选择2种方法。强烈建议使用在线下载,这种方式得到的源码肯定是最新的。

9.2.1 本地拷贝(待更新)

9.2.2 在线下载

100ask_imx6ull开发板的所有代码都是保存在git站点上通过repo命令进行统一管理,可以通过如下命令进行下载或同步。

9.2.3 配置repo

下载repo工具前需要设置git的邮箱和用户名,git邮箱和用户名请根据个人情况进行配置。

book@100ask:~$ git config --global user.email "[email protected]"
book@100ask:~$ git config --global user.name "100ask"

注意: 请先配置git邮箱和用户名,否则会导致下载失败(如下为参考示例图)。
在这里插入图片描述

9.2.4 下载源码

通过repo管理多个git仓库中的源码,可以及时更新最新代码,以方便开发者学习使用。
对于不同版本的IMX6ULL开发板,要执行不同的命令下载源码。

IMX6ULL MINI EMMC版
执行以下4条命令,为方便大家复制,第3条是很长的命令,使用了\来换行,需要一并拷贝:

book@100ask:~$  git clone https://e.coding.net/codebug8/repo.git
book@100ask:~$ mkdir -p 100ask_imx6ull_mini-sdk && cd 100ask_imx6ull_mini-sdk
book@100ask:~/100ask_imx6ull_mini-sdk$  ../repo/repo init \
 -u  https://gitee.com/weidongshan/manifests.git -b linux-sdk \
 -m imx6ull/100ask_imx6ull_mini_linux4.9.88_release.xml  --no-repo-verify
book@100ask:~/100ask_imx6ull_mini-sdk$  ../repo/repo sync -j4

注意:下载成功后,可以看到名为Linux-4.9.88的目录,可以在Ubuntu压缩它,再传回Windows。
在Windows下解压后,用source insight建立工程,这样就可以很方便地阅读源码了。

Ubuntu下压缩命令为(最好是下载之后马上压缩,不要编译内核后再压缩,否则文件太大了):

tar  cjf Linux-4.9.88.tar.bz2  Linux-4.9.88

以下截图是下载IMX6ULL版源码的过程:
在这里插入图片描述

首次下载如果提示 Testing colorized output (for ‘repo diff’, ‘repo status’): 此时输入 y 即可,继续执行 …/repo/repo sync -j4 命令即可开始同步源码(同步代码根据网络情况需要等待数分钟)。
下图为参考示例。
在这里插入图片描述在这里插入图片描述
同步完成后如下图所示
在这里插入图片描述

注意:repo在线下载的代码和网盘配套资料中的代码是一致的,会每隔一段时间更新一次源码包,如使用在线方式获取源码 可以直接在 ~/100ask_imx6ull-sdk 目录下执行 …/repo/repo sync -c进行同步更新最新代码!

9.3 配置交叉编译工具链

注意:使用我们提供的Ubuntu映象文件时,请按照我们的目录结构,手动设置交叉编译工具链以及编译的架构环境变量配置,(建议配置为永久生效)。

9.3.1 设置交叉编译工具链

交叉编译工具链用来在Ubuntu主机上编译应用程序,而这些应用程序是在ARM等其他平台上运行。
设置交叉编译工具主要是设置PATH, ARCH和CROSS_COMPILE三个环境变量,下面介绍具体设置方法。
在本文档中,源码、交叉编译工具链都是存放于/home/book目录下;如果你的目录不一样,请自行修改本节所讲述的命令。
设置这3个环境变量有多种方法,任意选择其中一种方法即可,建议使用“永久生效”的方法。

9.3.1.1 永久生效

如需永久修改,请修改用户配置文件。
注意:如果不会使用vim命令,可以使用图形化的编辑工具,执行:

gedit  ~/.bashrc
vim  ~/.bashrc

在行尾添加或修改,加上下面几行(第3行第4行为一行命令):

export ARCH=arm
export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
export PATH=$PATH:/home/book/100ask_imx6ull_mini-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin

设置完毕后,要执行 source ~/.bashrc 命令使其生效,并通过arm-buildroot-linux-

gnueabihf-gcc -v 命令来验证是否配置成功。
book@100ask:~$ source  ~/.bashrc
book@100ask:~$ arm-buildroot-linux-gnueabihf-gcc -v

以上操作是设置IMX6ULL Pro版工具链的过程,mini的操作与它类似。

9.3.1.2 临时生效

也可以手工执行“export”命令设置环境变量,该设置只对当前终端有效(另开一个终端需要再次设置)。

执行以下3个命令,第3个命令很长,需要包含第四行全部复制:

book@100ask:~$ export ARCH=arm
book@100ask:~$ export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
book@100ask:~$ export PATH=$PATH:/home/book/100ask_imx6ull_mini-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin

9.3.1.3 手动指定

先设置PATH环境变量,然后在make编译时指定ARCH架构 CROSS_COMPILE交叉编译工具链(执行make命令时指定的参数,只对当前命令有效;下次执行make时仍需要再次指定那些参数)。

示例如下,第1条命令很长,这里使用小字体方便大家复制:

book@100ask:~$ export PATH=$PATH:/home/book/100ask_imx6ull_mini-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
book@100ask:~$ make  ARCH=arm CROSS_COMPILE=arm-buildroot-linux-gnueabihf-

9.3.2 测试交叉编译工具链

9.3.2.1 测试环境变量:

book@100ask:~$ echo $ARCH
arm
book@100ask:~$ echo $CROSS_COMPILE
arm-buildroot-linux-gnueabihf-

9.3.2.2 测试交叉编译器:

执行以下命令,结果见后图:

book@100ask:~$ arm-buildroot-linux-gnueabihf-gcc -v

在这里插入图片描述

9.4 使用Source Insight阅读Linux内核源码

在后面开发驱动程序时,驱动程序中用到的函数都是来自内核,所以可以先在Windows下创建内核的Source Insight工程。
如果你不想学习驱动开发,那么可以不创建内核的工程。但是以后学习大型APP时,也可以使用Source Insight来阅读、编写代码,可以借鉴本节讲解的Source Insight用法。

9.4.1 Source Insight简介

Source Insight是Source Dynamics 公司出品的源代码编辑器。Source Insight提供语法突出显示,代码导航和可自定义的键盘快捷键。它不仅仅是一个编辑器,而是一个理解大型源代码库的工具,因此被称为“程序编辑器和分析器”。它灵活轻便,提供有用的功能,如关系,上下文和符号窗口。它在建源码工程时,构建了符号信息的内部数据库,所以还可以显示引用树,类继承图和调用树。它的最大好处是加快了对不熟悉项目的代码理解。
参考网址
 官网主页 请点击
 软件下载页面 请点击
 用户使用教程 请点击

9.4.2 在Windows上解压内核源码

前面章节《使用repo下载内核及工具链等》里下载到内核后,在Ubuntu下压缩了内核,把压缩文件通过FileZilla传回Windows,并解压。
在Windows解压内核时会提示一些错误,会提示是否覆盖文件,选择“覆盖”即可。这是因为Linux下的文件区分大小写,a.c和A.c以不同的文件,但是Windows下不区分大小写,这2个文件是同一个。这些错误不会影响我们阅读源码。

9.4.3 建立工程示例

本节新建一个linux kernel的source Insight工程,你也可以为其他APP建立工程,方法是一样的。
新建工程


运行source Insight,点击菜单“Project->New Project”,如下图所示:
在这里插入图片描述

设置工程名及工程数据目录


在弹出的New Project对话框中设置“New project name”(项目的名称),然后设置Where do you want to store the project data file? (项目文件保存位置),点击Browse按钮选择源码的目录即可。
在这里插入图片描述

指定源码目录


设置“Project Source Directory – the main location of your source files”(源码目录),
点击红框左边“…”选择源码目录,点击OK,如下图:
在这里插入图片描述

添加源码


在新弹出的对话框中,点击“Add”或“Add All”。“Add”是手动选择需要添加的文件,而“Add All”是添加所有文件。我们使用“Add All”,在弹出的提示框中选中“Recursively add lower sub-directories”(递归添加下级的子目录)并点击OK。同样的Remove File,Remove All是移除单个文件或者移除所有文件,如下图:
在这里插入图片描述

添加文件完成后点击Close,此时界面会返回到主界面,如下图,点击“Close”:
在这里插入图片描述

同步文件


同步文件的意思是让Source Insight去解析源码,生成数据库,这样有助于以后阅读源码。比如点击某个函数时就可以飞快地跳到它定义的地方。
先点击菜单“Project->Synchronize Files”,如下图所示:
在这里插入图片描述

在弹出的对话框中 选中“Force all files to be re-parsed”(强制解析所有文件),并点击“Start”按钮开始同步,如下图所示:
在这里插入图片描述

9.4.4 操作示例

打开工程


前面建议工程后,就会自动打开了工程。如果下次你想打开工程,启动Souce Insight后,点击菜单“Project -> Open Porject”就可以在一个列表中选择以前建立的工程,如下图:
在这里插入图片描述

在工程中打开文件


点击"P"图标打开文件列表,双击文件打开文件,也可以输入文件名查找文件,如下图所示:
在这里插入图片描述
在文件中查看函数或变量的定义


打开文件后,按住ctrl键的同时,用鼠标点击函数、变量,就会跳到定义它的位置,如下图所示:

在这里插入图片描述
查找函数或变量的引用


双击函数,右键点击弹出对话框选择“Lookup Reference”;或者双击函数后,使用快捷键"ctrl+/"来查找引用,如下图:
在这里插入图片描述

其他快捷键


快捷键 说明
Alt + , 后退
Alt + . 前进
F8 高亮选中的字符
Ctrl+F 查找
F3或Shift+F3 往前查找
F4或Shift+F4 往后查找

Guess you like

Origin blog.csdn.net/weixin_45840087/article/details/121647969