您尚未登录。

楼主 #1 2020-05-01 16:18:59

LinjieGuo
Moderator
注册时间: 2019-07-24
已发帖子: 581
积分: 585
个人网站

尝试从一开发F1C100s应用

尝试从一开发F1C100s应用
    既然尝试从零构建F1C100s开发环境成功,我们便开始开发这个神奇的芯片吧。
在这之前,我们写了一个hello程序,我们是怎么装进文件系统里的呢?拷贝到根文件系统,与uboot,内核打包在一起,然后烧写。显然,这样子影响flash寿命不说,肯定大大的减少了我们的开发效率。所以我们不得不采取一种高效的措施,将文件传输到我们的目标板中。
    废话不多说,随意概括一下,本贴将包含了以下内容:
1、终端传文件给linux


注意,本贴禁止回复"mark"!

注意,本贴禁止回复"mark"!

注意,本贴禁止回复"mark"!

----------------------------------------
1、使用终端传文件给linux
    目标板与外界传文件的方法非多,但是其他方法(NFS启动、wifi传输等),对于我们现在从零构建的工程基础,显然,非常不现实。经过多方面的考虑,最终,选择使用已经能够成功控制单板的串口终端来传输文件。
    网上有一个工具,lrzsz,我们可以获取其源码,编译到目标板中。
(1)获取资源
①lrzsz源码:https://whycan.cn/files/members/1845/lrzsz-0_12_20_tar.gz
②终端工具:https://whycan.cn/files/members/1845/SecureCRT.zip
(2)编译这个lrzsz
①新建一个目录存放这个包
mkdir /home/book/f1c100s/lrzsz
②自己想办法将下载到的lrzsz-0_12_20_tar.gz上传到/home/book/f1c100s/lrzsz目录下。
③进入该目录并解压lrzsz包

cd /home/book/f1c100s/lrzsz
tar -xzvf lrzsz-0_12_20_tar.gz

④进入解压出来的目录

cd lrzsz-0.12.20/

⑤输入一下命令生成配置文件

./configure --cache=arm-linux

⑥明确自己交叉编译工具链的位置
我们使用buildroot输出的交叉编译工具链,与根文件系统一致。我的编译器的目录位于这个路径:
/home/book/f1c100s/buildroot-2017.08/output/host/bin/arm-linux-gcc
⑦使用这个交叉编译工具链,编译它

make CC=/home/book/f1c100s/buildroot-2017.08/output/host/bin/arm-linux-gcc

编译出来,生成了两个文件,复制这两个文件到我们的根文件系统bin目录下

sudo cp ./src/lsz /home/book/f1c100s/rootfs/bin/
sudo cp ./src/lrz /home/book/f1c100s/rootfs/bin/

⑧看看我们有没有缺少什么运行库
==>检查第1个文件

/home/book/f1c100s/buildroot-2017.08/output/host/bin/arm-linux-readelf -d ./src/lsz

可以看到,这个程序依赖于这样的运行库
  标记        类型                         名称/值
0x00000001 (NEEDED)                     共享库:[libc.so.0]
==>检查第2个文件

/home/book/f1c100s/buildroot-2017.08/output/host/bin/arm-linux-readelf -d ./src/lrz

发现依赖库跟第一个一样。
⑨复制依赖库,到根文件系统的lib目录下。
那么问题来了,依赖库放在哪里呢?我们在交叉编译工具链哪里搜索一下:

cd /home/book/f1c100s/buildroot-2017.08/output/host/
find -name "libc.so.0"

结果如下:
./arm-buildroot-linux-uclibcgnueabi/sysroot/lib/libc.so.0

复制这个库文件到根文件目录lib中,

sudo cp /home/book/f1c100s/buildroot-2017.08/output/host/arm-buildroot-linux-uclibcgnueabi/sysroot/lib/libc.so.0 /home/book/f1c100s/rootfs/lib/

⑩打包并烧写镜像。

sudo sh /home/book/f1c100s/BuildMyImage.sh

(3)使用这个工具
使用串口CRT工具连接终端,输入命令"lrz",回车,CRT会弹出一个框框,我们可以发送一个文件到目标板
上个图就好了,自己折腾吧。速度有点慢,聊胜于无。(/笑)
Trans

最近编辑记录 LinjieGuo (2020-05-01 16:31:15)

离线

楼主 #4 2020-05-02 11:45:33

LinjieGuo
Moderator
注册时间: 2019-07-24
已发帖子: 581
积分: 585
个人网站

Re: 尝试从一开发F1C100s应用

kekemuyu 说:

很多终端工具都支持X/Z modem,很稳定。开发人员使用起来也算方便。

最近编辑记录 LinjieGuo (2020-05-02 11:45:51)

离线

楼主 #8 2020-05-02 15:26:27

LinjieGuo
Moderator
注册时间: 2019-07-24
已发帖子: 581
积分: 585
个人网站

Re: 尝试从一开发F1C100s应用

jiangming1399 说:

既然用了buildroot,为啥不直接打开这个功能编译呢……

(我个人是喜欢用dropbear来ssh连接到电脑的,只需要设置usb gadget网卡就可以了)

没找着...有空搜索一下看看,(/笑)

最近编辑记录 LinjieGuo (2020-05-02 15:27:27)

离线

楼主 #9 2020-05-02 15:45:08

LinjieGuo
Moderator
注册时间: 2019-07-24
已发帖子: 581
积分: 585
个人网站

Re: 尝试从一开发F1C100s应用

感谢万能的坑友,我搜索了一下,buildroot中确实有这个功能,可以通过搜索lrzsz,找到了它位于这个目录中:
Target packages  --->
         Networking applications  --->
                 [v] lrzsz
勾选之后,编译,根文件系统中就有这个工具了。

离线

楼主 #18 2020-05-14 22:27:23

LinjieGuo
Moderator
注册时间: 2019-07-24
已发帖子: 581
积分: 585
个人网站

Re: 尝试从一开发F1C100s应用

name272 说:

请问,编译主线linux时的工具链,跟rootfs有啥区别。为啥混用会有问题?

buildroot生成的根文件系统是用什么工具链,你的应用就应该用什么工具链。这样省事。

离线

楼主 #21 2020-06-15 21:52:23

LinjieGuo
Moderator
注册时间: 2019-07-24
已发帖子: 581
积分: 585
个人网站

Re: 尝试从一开发F1C100s应用

嵌入式冲 说:

这个不能在putty软件用吗,卡住了,没有弹出来

用Scrt,上面留链接了

最近编辑记录 LinjieGuo (2020-06-15 21:52:44)

离线

楼主 #24 2020-06-15 23:30:13

LinjieGuo
Moderator
注册时间: 2019-07-24
已发帖子: 581
积分: 585
个人网站

Re: 尝试从一开发F1C100s应用

嵌入式冲 说:

只能用这个才可以用lrz吗

里面解压出来,有一个bat文件,支持绿色和谐软件的。很多终端软件都支持。自行搜索吧。

离线

楼主 #26 2020-06-28 16:59:26

LinjieGuo
Moderator
注册时间: 2019-07-24
已发帖子: 581
积分: 585
个人网站

Re: 尝试从一开发F1C100s应用

willX 说:

感谢楼楼大力支持啊,但是我觉得是不是adb更好用啊?而且速度也快。

是的,adb速度比较快!

离线

楼主 #29 2020-07-02 15:46:10

LinjieGuo
Moderator
注册时间: 2019-07-24
已发帖子: 581
积分: 585
个人网站

Re: 尝试从一开发F1C100s应用

liuy 说:

楼主能不能出一个SPI NAND启动教程啊

在论坛里找找,使用支持SPI Nand的Uboot就可以了。

离线

楼主 #30 2020-07-02 15:49:02

LinjieGuo
Moderator
注册时间: 2019-07-24
已发帖子: 581
积分: 585
个人网站

Re: 尝试从一开发F1C100s应用

willX 说:

关于adb功能的启用,在Linux3.14上,楼主有什么好的推荐吗?

我现在打开了usb gadget驱动,usb functionfs驱动,编译好了adbd、adb,但是板子接电脑一直不能识别(一点动静没有)。不明原因啊,痛苦了几天了。
楼主有空帮忙看看,多谢啦。

转 123楼:https://whycan.cn/t_2794.html

不好意思,这个版本我也没搞定。

离线

楼主 #33 2020-07-10 10:07:31

LinjieGuo
Moderator
注册时间: 2019-07-24
已发帖子: 581
积分: 585
个人网站

Re: 尝试从一开发F1C100s应用

lz206 说:

学习了,学习了,学习了,hhh

你这样水积分可不好喔。

离线

楼主 #39 2020-07-15 15:39:23

LinjieGuo
Moderator
注册时间: 2019-07-24
已发帖子: 581
积分: 585
个人网站

Re: 尝试从一开发F1C100s应用

jared1716 说:

请问大神,有没有win10下的开发环境?

使用samba,然后挂载文件系统到win本地,可以使用source insight去编写代码,编写完使用一个sh脚本编译,直接在win下访问linux进行bin文件烧录即可。其他方法,我也没用,不清楚。

最近编辑记录 LinjieGuo (2020-07-15 15:39:44)

离线

楼主 #43 2020-09-18 02:01:12

LinjieGuo
Moderator
注册时间: 2019-07-24
已发帖子: 581
积分: 585
个人网站

Re: 尝试从一开发F1C100s应用

rongjun 说:

楼主有没有试过在Mac下进行编译调试?

没有使用过mac系统呢

离线

楼主 #45 2021-01-12 11:39:10

LinjieGuo
Moderator
注册时间: 2019-07-24
已发帖子: 581
积分: 585
个人网站

Re: 尝试从一开发F1C100s应用

willX 说:

楼主,麻烦问下,为什么你编译arm上跑的应用软件时,使用的是:make CC=/home/book/f1c100s/buildroot-2017.08/output/host/bin/arm-linux-gcc
为什么不用直接使用编译kernel时的交叉编译器呢? 比如这个:arm-linux-gnueabi-gcc-7.2.1

   疑问: 为什么会出现两套交叉编译器呢?

根文件系统是buildroot出来的,buildroot里面自己下载了一个编译器,用来编译根文件系统。
我们的内核是单独编译的,所以有2套编译器。
如果buildroot里包含内核,应该编译器就相同了。
我是这样理解的,根文件系统用什么编译器,应用程序就应该用什么编译器。

最近编辑记录 LinjieGuo (2021-01-12 11:41:34)

离线

楼主 #47 2021-01-12 20:22:01

LinjieGuo
Moderator
注册时间: 2019-07-24
已发帖子: 581
积分: 585
个人网站

Re: 尝试从一开发F1C100s应用

好多问题 说:

我用的 deepin 写的驱动,内核和 nano 不一样,驱动在nano上用不了,怎么办?

驱动好像是依赖内核文件的,编译的时候makefile包含内核路径。

离线

楼主 #49 2021-01-15 13:40:19

LinjieGuo
Moderator
注册时间: 2019-07-24
已发帖子: 581
积分: 585
个人网站

Re: 尝试从一开发F1C100s应用

LinuxGo 说:

你好 linjie
我在编译 的时候出现
l10nflist.c:42:19: fatal error: argz.h: No such file or directory
# include <argz.h>
                   ^
compilation terminated.
make[2]: *** [Makefile:78: l10nflist.o] Error 1
make[2]: Leaving directory '/home/jonsen/f1c100s/lrzsz/lrzsz-0.12.20/intl'
make[1]: *** [Makefile:172: all-recursive] Error 1
make[1]: Leaving directory '/home/jonsen/f1c100s/lrzsz/lrzsz-0.12.20'
make: *** [Makefile:282: all-recursive-am] Error 2


不知如何处理?

        直接进buildroot里,make menuconfig,然后找到lrzsz这个支持包,勾选上,然后编译。就有了,这种编译的过程学习一下就ok了。

离线

楼主 #52 2021-01-15 14:11:50

LinjieGuo
Moderator
注册时间: 2019-07-24
已发帖子: 581
积分: 585
个人网站

Re: 尝试从一开发F1C100s应用

LinuxGo 说:

你好 linjie
那我重新编译 打包 烧录到芯片后
pc下载 SecureCRT.zip 这个工具就能跑了啊
不用自己装了

LinjieGuo 说:

感谢万能的坑友,我搜索了一下,buildroot中确实有这个功能,可以通过搜索lrzsz,找到了它位于这个目录中:
Target packages  --->
         Networking applications  --->
                 [v] lrzsz
勾选之后,编译,根文件系统中就有这个工具了。

是的,先运行绿色.bat,输入Y,破解,然后退出,找到SecureCRT.exe执行程序,连接串口就ok了。

离线

楼主 #55 2021-01-15 15:17:10

LinjieGuo
Moderator
注册时间: 2019-07-24
已发帖子: 581
积分: 585
个人网站

Re: 尝试从一开发F1C100s应用

LinuxGo 说:

你好 linjie
buildroot 里配置了
Search Results ─
  │ Symbol: BR2_PACKAGE_LRZSZ [=y]    这里                                                                                                                         
  │ Type  : boolean                                                                                                                                               
  │ Prompt: lrzsz                                                                                                                                                 
  │   Location:                                                                                                                                                   
  │     -> Target packages                                                                                                                                         
  │ (1)   -> Networking applications                                                                                                                               
  │   Defined at package/lrzsz/Config.in:1                                                                                                                     
  │   Depends on: !BR2_STATIC_LIBS [=n]
编译后 在 output/images/rootfs.tar /bin  里没有找到 lrz命令,,,,
# cd ../
# ls
bin        hello      lib32      media      proc       sbin       usr
dev        hellonano  linuxrc    mnt        root       sys        var
etc        lib        main.c     opt        run        tmp
# cd bin
# ls
ash            dumpkmap       linux64        nice           sh
busybox        echo           ln             pidof          sleep
cat            egrep          login          ping           stty
chattr         false          ls             pipe_progress  su
chgrp          fdflush        lsattr         printenv       sync
chmod          fgrep          mkdir          ps             tar
chown          getopt         mknod          pwd            touch
cp             grep           mktemp         rm             true
cpio           gunzip         more           rmdir          umount
date           gzip           mount          run-parts      uname
dd             hostname       mountpoint     sed            usleep
df             kill           mt             setarch        vi
dmesg          link           mv             setpriv        watch
dnsdomainname  linux32        netstat        setserial      zcat
# lrz
/bin/sh: lrz: not found
#

LinjieGuo 说:
LinuxGo 说:

你好 linjie
那我重新编译 打包 烧录到芯片后
pc下载 SecureCRT.zip 这个工具就能跑了啊
不用自己装了

是的,先运行绿色.bat,输入Y,破解,然后退出,找到SecureCRT.exe执行程序,连接串口就ok了。

在buildroot里勾选,是可以的喔,我测试过。我电脑在家里,我得晚上回去看看,现在不方便搞f1c100s,你看看是不是勾选错了,或者直接下载我配置好的虚拟机,

最近编辑记录 LinjieGuo (2021-01-15 15:18:24)

离线

楼主 #57 2021-01-15 17:15:31

LinjieGuo
Moderator
注册时间: 2019-07-24
已发帖子: 581
积分: 585
个人网站

Re: 尝试从一开发F1C100s应用

我使用V3s的buildroot,勾选lrzsz,然后编译,看看有没有。
sinlinx029.png
编译完,重新打包,烧写进单板,启动linux,查看一下有没有,显然,是有的。
sinlinx030.png

最近编辑记录 LinjieGuo (2021-01-15 17:21:52)

离线

楼主 #58 2021-01-15 17:22:29

LinjieGuo
Moderator
注册时间: 2019-07-24
已发帖子: 581
积分: 585
个人网站

Re: 尝试从一开发F1C100s应用

LinuxGo 说:

你好 Linjie:
尝试了好几次,make 后 在bin里没看到 lrzsz出来
很奇怪,晚上麻烦看下你那有么有?

你是不是没有重新打包。还是勾选错了呢?

离线

楼主 #65 2023-07-09 11:40:10

LinjieGuo
Moderator
注册时间: 2019-07-24
已发帖子: 581
积分: 585
个人网站

Re: 尝试从一开发F1C100s应用

jiabuda 说:

借楼问问,其实除了rz这种,是否有一些更高效的方式来进行开发呢?我现在编译lvgl,每次出来的执行文件都有300多k,传输一次一分钟,有点太慢

用usb adb,论坛里有。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn