一、imx6ull开发板使用方式详解
首先和大家说明一下,使用imx6ull开发板要求电脑必须有2个USB接口。
如果没有2个USB接口,必须上网购买拓展坞,类似下面这种:
使用的时候只需要把2条USB连接线插在电脑或者扩展坞的USB插口上即可(顺序无所谓,如图是扩展坞的示例):
接下来简单介绍USB Serial、OTG接口在开发板中的作用:
USB Serial:主要被用于与电脑进行串行通信,例如传输控制指令或者接收状态信息等。USB Serial主要用于终端的调试输出,比如打印系统启动日志或者应用的调试信息等。
OTG:被用于连接电脑和开发板进行直接的数据交换,例如读取或者写入文件等。
所以两个USB接口缺一不可,USB Serial可以理解为传输指令、状态和调试等的信息,OTG用于读写文件数据,实测少连任意一个USB接口,程序都跑不了。
友情提示:具体端口的信息可以在开发板背面查看。
二、MobaXterm终端连接开发板启动程序
连接完USB Serial和OTG后(注意一定要先连通开发板和电脑),进入MobaXterm后点击左上角的Session:
然后选择Serial port(串口),会看到Serial port多了一个,选中。同时记得Speed要选择115200。点击OK:
千万注意要先进入到终端页面,再进行后面的操作:
进入doc_and_source_for_openharmony\IMX6ULL\开发板配套资料\软件\烧写工具\100ask_imx6ull烧写工具v4,选中100ask_imx6ull_flashing_tool_v4.0.exe:
此时可以看到设备已连接,先点击[下载到内存并启动]:
[再次提醒必须要先进入到MobaXterm终端页面,再点击下载到内存并启动],此时会看到串口实时刷出信息:
三、编译鸿蒙LiteOS-a内核
第1步:在Ubuntu中安装开发环境
下面这段代码就是安装tftp,nfs,vim等软件,要注意该脚本只支持Ubuntu-16.04/Ubuntu-18.04。
wget --no-check-certificate -O Configuring_ubuntu.sh https://weidongshan.coding.net/p/DevelopmentEnvConf/d/DevelopmntEnvConf/git/raw/master/Configuring_ubuntu.sh && sudo chmod +x Configuring_ubuntu.sh && sudo ./Configuring_ubuntu.sh
有些同学系统是Ubuntu-20可能会失败,可以通过lsb_release -a代码进行自查:
如何出现./Configuring_ubuntu.sh: {msg:{user_not_login:用户未登录},data:{account_type:0},code:1000}: not found,可以参考第三部分的问题2。
出现下面界面是正常的,选择1:
第2步:配置GIT与REPO
首先要配置GIT客户端的信息:
git config --global user.name "100ask"
git config --global user.email "weidongshan@qq.com"
git config --global credential.helper store
因为后面要从gitee上下载东西,需要设置必要的登录信息,模拟人为登录。
git config --global user.name "100ask"用于设置登录用户名。
git config --global user.email "weidongshan@qq.com"用于设置登录邮箱。
git config --global credential.helper store用来设置 Git 的全局配置,它让 Git 在下次用户需要输入用户名和密码时,将它们存储在硬盘上,以便下次进行认证时可以自动填充,这样就不用每次操作 Git 时都输入用户名和密码了。
然后下载REPO:
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > repo
sudo cp repo /usr/local/bin/repo && sudo chmod a+x /usr/local/bin/repo
sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > repo 这个命令的目的是下载一个 Python 3 版本的 repo 工具。
sudo cp repo /usr/local/bin/repo && sudo chmod a+x /usr/local/bin/repo 这个命令将下载的 repo 文件复制到/usr/local/bin/目录下,使得可以在任何地方通过输入 repo 来调用这个工具。
sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple requests 这是一个 pip 命令,用来安装 Python 的 requests 库。这里使用了清华大学提供的 PyPI 镜像,可以加速在中国大陆的下载速度。
第3步:下载liteos源码
先进入book目录,git clone命令会将gitee上的doc_and_source_for_openharmony文件下载下来,这个其实是个学习资料的文件夹。
cd /home/book
git clone https://e.coding.net/weidongshan/openharmony/doc_and_source_for_openharmony.git
接下来正式下载源码:
mkdir openharmony
cd openharmony/
repo init -u https://gitee.com/openharmony/manifest.git -b OpenHarmony-1.0
repo sync -c -j8
mkdir openharmony 是在/home/book下创建一个名为openharmony的文件夹用于存放代码。
repo init -u https://gitee.com/openharmony/manifest.git -b OpenHarmony-1.0 这段代码是从gitee仓库上初始化OpenHarmony-1.0的代码。
现在大家植入一个意识,其实https://gitee.com/openharmony/manifest链接是可以访问的。同时OpenHarmony的源码版本也不止一个1.0,现在已经出了4.0。
repo sync -c -j8 执行完这段代码才真正开始下载仓库里的源码。
第4步:打补丁
补丁在/home/book/doc_and_source_for_openharmony\IMX6ULL\source\01_文档配套的源码\patch下,名为openharmony_100ask_v1.2.patch,可以直接cp到/home/book目录下,在此不过多赘述。
在/home/book/openharmony目录下是鸿蒙的源码,补丁文件openharmony_100ask_v1.2.patch放在/home/book目录下,输入下面代码打补丁:
cd /home/book/openharmony
patch -p1 < /home/book/openharmony_100ask_v1.2.patch
第5步:编译内核
cd /home/book/openharmony/kernel/liteos_a
cp tools/build/config/debug/imx6ull_clang.config .config
make clean
make -j 8
make rootfs
cp out/imx6ull/rootfs.img out/imx6ull/rootfs.jffs2
首先要进入/home/book/openharmony/kernel/liteos_a下,然后将tools/build/config/debug/imx6ull_clang.config移动到当前目录下,更名为.config的文件。
make clean 先清除一下,否则会提示错误。
make -j 8 编译内核,可以得到out/imx6ull/liteos.bin。注意在这一步很多人会遇到make: WARNING:Set: Command not found的问题,此时可以参考第三部分问题1。
make rootfs 编译根文件系统,可以得到rootfs.img。
cp out/imx6ull/rootfs.img out/imx6ull/rootfs.jffs2 这纯粹就是改个名,方便辨认,后面会知道,烧写工具使用rootfs.jffs2文件。
第6步:下载运行
注意:要把生成的.bin文件和.jffs2文件放置到你自己本地机的烧写工具的files目录下,这样开发板才能运行。
要注意:开发板必须运行在你本机上,而不能运行在虚拟机上。
烧写工具的files目录在doc_and_source_for_openharmony\IMX6ULL\开发板配套资料\软件\烧写工具\100ask_imx6ull烧写工具v4\files下:
首先打开虚拟机的imx6ull目录,找到liteos.bin和rootfs.jffs2文件:
然后直接拖动文件到目标文件夹即可:
可以看到文件被复制到了目标目录:
在运行烧写工具和MobaXterm(参考前面的第二节)后,输入下面代码,即可输出结果:
./bin/hello
四、Ubuntu虚拟机使用鸿蒙LiteOs操作系统常见错误汇总
问题1:make: WARNING:Set: Command not found
问题描述:使用百问网的教程,在鸿蒙LiteOs中输入make -j 8编译内核的时候出现make: WARNING:Set: Command not found的错误,这个问题困扰了我3天,重装了9次ubuntu系统也没有解决:
最后发现有3种解决方法:
方法1(成功率最高):等到先打完补丁之后,重新再去运行前面配置环境的代码
运行下面配置环境的代码:
亲测这种方法能够有90%的把握解决前面的问题。如果问题解决了【帮忙点赞+收藏一下吧】
我就是通过方法1成功编译内核的:
方法2:直接使用百问网提供的虚拟机,再结合方法1的操作!!结合方法1的操作!据反馈能解决99%的问题。
03_100ask_imx6ull_mini_2022.08_免费高速下载|百度网盘-分享无限制 (baidu.com)
03_100ask_imx6ull_mini_2022.08/02_开发工具/100ask-vmware_ubuntu18.04下下载压缩包。
文件略微有点大,如果下载不便,可【点赞+收藏后私信我领取】
下载后的ubuntu文件包含有Ubuntu 18.04.2(64bit.vmdk),如下图:
可直接通过虚拟机打开:
选择下面ubuntu 18.04_x64.vmx文件打开:
方法3:找完成的同学clone虚拟机。如果尝试过上面2种方法也不能解决,那还是找已经成功的同学克隆复制虚拟机吧。
等所有步骤操作完之后会有下面2个文件:
问题2:./Configuring_ubuntu.sh: {msg:{user_not_login:用户未登录},data:{account_type:0},code:1000}: not found
问题描述:输入./Configuring_ubuntu.sh后出现上面的报错
解决方法:
rm -rf DevelopmentEnvConf
git clone https://e.coding.net/weidongshan/DevelopmentEnvConf.git
cd DevelopmentEnvConf
sudo ./Configuring_ubuntu.sh
【如果有效记得点赞+收藏哟,方便下次查看】
问题3:Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable) Unable to lock the administration directory
问题描述:当用apt-get命令下载的时候,会提示进程被占用的信息。查找网上的资料有说用下面2条命令能解决:
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
但我尝试后不能解决,研究了半小时找到了解决方法:
解决方法:
先进入文件夹,点击Other Locations
按照下面的方式进入var/lib/dpkg目录:
看到lock文件,我们手动删除它:
右键空白地方,选择打开终端:
输入下面代码就删除成功了,现在应该就不存在占用问题了!
【如果有效的话点个赞吧,摸索了好久才解决的】
问题4:fatal error 'stdio.h' file not found
问题描述:使用make编译文件的时候报错,显示stdio.h等头文件没找到
问题分析:一般是配置问题,导致编译器gcc找不到头文件的配置,我们一般有2种解决方法:
解决方案:
首先我们输入如下代码,用于查找stdio.h文件在哪个位置,可以替换头文件名:
find /home/book/openharmony/prebuilts/lite/sysroot/ -name stdio.h
如下是返回的文件路径:一般是在这个路径下: /home/book/openharmony/prebuilts/lite/sysroot/usr/include/arm-liteos
然后输入下面的代码进行编译即可:
clang -target arm-liteos --sysroot=/home/book/openharmony/prebuilts/lite/sysroot/ -I/home/book/openharmony/prebuilts/lite/sysroot/usr/include/arm-liteos/ -o hello hello.c
-I
是一个编译器选项,用于告诉编译器在哪里查找头文件。 下面这段代码告诉编译器在 /home/book/openharmony/prebuilts/lite/sysroot/usr/include/arm-liteos/
这个目录下查找头文件。
可以上面的代码修改后放在同级的Makefile文件里:
可以看到默认是不带头文件路径的。
代码如下图,注意要把上面$@ $^那些代码改掉,否则会出现目标架构不兼容的问题:
第2种方法:就是直接更改gcc的配置,使其扫描到头文件所在的位置,这个危险性比较大,且不够灵活,可能因为写错部分字符导致其它文件也不能编译,推荐大家慎用哈~
——————————————————————
1. 接口:接口默认被public abstract修饰,抽象方法无方法体,被default和static修饰的方法必须有方法体。抽象方法不可以有方法体。
2. 执行父类的静态代码块,执行子类的静态代码块,执行父类的构造代码块,执行父类的构造函数,执行子类的构造代码块,执行子类的构造函数
3. 线程生命周期5种状态:初始态,就绪态,运行态,阻塞态,死亡态。
4.