ubuntu下linux移植到开发板(持续更新)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ubuntu下linux移植到开发板(持续更新)相关的知识,希望对你有一定的参考价值。

一、环境搭建:

1、ubuntu系统安装

  以下操作都是在ubuntu16.04基础上进行操作的。具体的系统安装不进行说明。可以有以下方案,具体根据个人情况进行安装。

  •   win7下安装虚拟机进行ubuntu系统安装;
  •   win7+ubuntu双系统;
  •   纯ubuntu系统;

2、配置安装secbulk的下载环境

  这里的安装dnw其实就是从网站上下载【dnw4linux-master.zip】,并把这个文件解压到一个目录中。【下载地址:  https://github.com/Qunero/dnw4linux】其中包含     secbulk

  下载完代码后,一定要阅读里面的README

  1)源码说明:

  本源代码收集自网络,经过整理和加入宏定义,使其适用于OK6410开发板;对

  源码进行了适当的注释和错误纠正;同样以GPL协议发布;

  2)使用说明:

  a、先在/home下新建一个mydrive(名字可以自己取)(mkdir /home/mydriver),

  b、将dnw4linux-master.zip中的“secbulk_driver”文件夹复制到该“mydrive”文件夹中。

  c、使用[email protected]:~$ dmesg检查系统的设备信息。

[23767.867752] usb 2-1.1: Product: SEC S3C2410X Test B/D
[23767.867760] usb 2-1.1: Manufacturer: System MCU
[23767.868277] secbulk:secbulk probing...
[23767.868282] secbulk:bulk out endpoint found!
[23777.302060] usb 2-1.1: USB disconnect, device number 10
[23777.302145] secbulk:secbulk disconnected!
[23889.626700] usb 2-1.1: new full-speed USB device number 11 using ehci-pci
[23889.720193] usb 2-1.1: New USB device found, idVendor=5345, idProduct=1234(设备信息编号)
[23889.720199] usb 2-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[23889.720202] usb 2-1.1: Product: SEC S3C2410X Test B/D
[23889.720205] usb 2-1.1: Manufacturer: System MCU
[23889.720545] secbulk:secbulk probing...
[23889.720548] secbulk:bulk out endpoint found!
[email protected]:~$ 

  d、进入secbulk_driver子目录,修改文件secbulk.c中的关于DOWNLOAD_USB_ID_MAJOR和DOWNLOAD_USB_ID_MINOR的宏定义,让其与你的usb对应,可以通过lsusb命令查看获得该id的信息;

  如下所示:  

#define SECBULK_MAJOR    102
#define SECBULK_MINOR    0
#define DRIVER_NAME    "secbulk"
#define BULKOUT_BUFFER_SIZE    512

#ifdef OK6410 
    #define        DOWNLOAD_USB_ID_MAJOR        0x5345//0x04e8
    #define        DOWNLOAD_USB_ID_MINOR        0x1234
#else                                           /* add your usb info if neccessary */
    #define        DOWNLOAD_USB_ID_MAJOR        0x5345//0x04e8
    #define        DOWNLOAD_USB_ID_MINOR        0x1234
#endif

  e、使用make(在secbulk_driver下执行)。生成secbulk.ko模块文件。

  f、$ sudo insmod secbulk.ko ;加载该模块到内核(注意:需要root权限)

    加载后用dmesg命令可以看到模块已经成功加载
         [23889.720545] secbulk:secbulk probing...
    [23889.720548] secbulk:bulk out endpoint found!
    将secbulk.ko驱动设为自动加载:

       h、直接执行make clean, 让你的源码目录干干净净;

  i、为了能让设备启动时自动加载进行如下修改。修改/etc/rc.local文件

    先在住目录建立mydriver目录:mkdir ~/mydriver

    将驱动放入自定义mydriver中:cp secbulk.ko ~/mydriver/

    修改/etc/rc.d/rc.local文件,末尾加入: sudo insmod $HOME/secbulk.ko

    注意: 将上面的$HOME替换成实际的绝对路径,比如: /home/mydriver/secbulk_driver

     注意,当前编译好的dnw在32位linux可用,但是secbulk.ko驱动文件需要自己编译必须同当前使用的内核的版本一致,内核版本升级后也需要重新编译;

/××问题1×/ubuntu以下无法找到ttyUSB0,即使是文件还是命令都找不到。

/××检查是否有u转串×/

Linux下如何使用USB转串口设备
对没有串口的笔记本持有者来说,做硬件开发经常为没有串口而烦恼,不过现在有了USB转串口设备。但是新的问题又出现了,比如说对于Minicom下的PC机和目标机通信还是存在着一些配置问题,下面就说一下linux下USB转串口的具体配置和问题:

注意: 默认情况下ubuntu已经安装了USB转串口驱动(pl2303)。

1、# lsmod | grep usbserial
如果有usbserial,说明系统支持USB转串口。
usbserial              40960  1 ch341

2、插上USB转串口,在终端输入命令#dmesg | grep ttyUSB0,如果出现连接成功信息,则说明ubuntu系统已经识别该设备了。

3、在上面minicom的配置中设置Serial Device: /dev/ttyUSB0,重启开发板,这样基本上就可以正常使用minicom来打印串口信息了。

4、问题
如果经过上面的步骤minicom还是不能正常工作,出现如下错误提示:
# sudo minicom
minicom: cannot open /dev/ttyUSB0: 没有该文件或目录

这时可以尝试换一个USB口,然后再次操作以上流程。 如果还是提示这个错误,那么可以使用下面的方法来解决。

 

/××解决方法×/

1、安装usbmount

$ sudo apt-get install usbmount

2、更改usbmount配置文件

$ sudo gedit /etc/usbmount/usbmount.conf

3、在打开的文件中找到FILESYSTEM,并在其中添加vfat,ntfs

4、FS_MOUNTOPTIONS这个选项里加入”"-fstype= vfat,iocharset=utf8,codepage=936,umask=000,users”

5、重启udev

$sudo /etc/init.d/udev restart

6、重启Ubuntu

$ sudo reboot

重启之后即可识别USB。
注:重启系统的时候请将开发板的U口先拔出,或则系统无法正常进入。

3、使用minicom将make生成的可执行文件复制到开发板的linux系统中(前提开发把bootload和linux以及下载进去。)主要是测试是否能够通过minicom将文件复制到开发板中。

1)安装minicom
         sudo apt-get install minicom

2)配置minicom:
        1 . 在终端中输入minicom以启动minicom;
        2. 先按下Ctrl + a, 放开, 再按o, 出现配置菜单.
        3. 选择 Serial port setup, 此时所示图标在“Change which setting”中,键入“A”,此时光标移到第A项对应处:串口COM1对应ttyS0, COM2对应ttyS1. (注意选择)

具体的配置信息如下所示:

Serial port setup [Enter]
+-------------------------------------------------------------+
| A -    Serial Device      : /dev/ttyUSB0                    |
| B - Lockfile Location     : /var/lock                       |
| C -   Callin Program      :                                 |
| D - Callout Program      -:                                 |
| E -    Bps/Par/Bits       : 115200 8N1                      |
| F - Hardware Flow Control : No                              |
| G - Software Flow Control : No                              |
|                                                             |
|    Change which setting?                                    |
+-------------------------------------------------------------+ 

 

注意: 如果没有使用USB转串口,而是直接使用串口,那么Serial Device要配置为/dev/ttyS0。对波特率,数据位和停止位进行配置,键入“E”,波特率选为115200 8N1 (奇偶校验无, 停止位1), 硬/软件流控制分别键入“F”“G”并且都选NO.在确认配置正确之后,可键入回车返回上级配置界面,并将其保存为默认配置。(即save setup as dfl),之后重启minicom是刚才配置生效,在连上开发板的串口线后,就可在minicom中打印正确的串口信息了。

注:
这时候可以打印串口的信息了,但是在通过串口用xmodem协议烧写内核时会提示没有xmodem协议。 所以还必须安装软件包:lrzsz sudo apt-get install lrzsz

下次在输入minicon 即可直接进入。
命令minicom是进入串口超级终端画面,而minicom -s为配置minicom。
说明/dev/ttyS0 对应为串口0 为你连接开发板的端口。

注意:非正常关闭minicom,会在/var/lock下创建几个文件LCK*,这几个文件阻止了minicom的运行,将它们删除后即可恢复

组合键的用法是:先按Ctrl+A组合键,然后松开这两个键,再按Z键。另外还有一些常用的组合键。
(1)S键:发送文件到目标系统中;
(2)W键:自动卷屏。当显示的内容超过一行之后,自动将后面的内容换行。这个功能在查看内核的启动信息时很有用。
(3)C键:清除屏幕的显示内容;
(4)B键:浏览minicom的历史显示;
(5)X键:退出mInicom,会提示确认退出。

3)配置文件所在目录

Ctrl + A --> O
+-----[configuration]------+
| Filenames and paths      |
| File transfer protocols -|
| Serial port setup        |
| Modem and dialing        |
| Screen and keyboard      |
| Save setup as dfl        |
| Save setup as..          |
| Exit                     |
+--------------------------+

选择"Filenames and paths"
+-----------------------------------------------------------------------+
| A - Download directory : /tmp                                         |
| B - Upload directory   : /tmp/demo_space                              |
| C - Script directory   :                                              |
| D - Script program     : runscript                                    |
| E - Kermit program     :                                              |
| F - Logging options                                                   |
|                                                                       |
|    Change which setting?                                              |
+-----------------------------------------------------------------------+ 
(1)A - download 下载文件的存放位置(开发板 ---> PC)开发板上的文件将被传输到PC机上的/home/crliu目录下。 (2)B - upload 从此处读取上传的文件(PC ---> 开发板)PC机向开发板发送文件,需要发送的文件在/tmp目录下(PC机上的目录)。做了此项配置后,每次向开发板发送文件时,只需输入文件名即可,无需输入文件所在目录的绝对路径

 

4)将开发板和pc通过usb线链接好后,minicom开启成功。对开发板上,开发板运行uboot之后按空格键,窗口显示。

 

 +------------------------------------------------------------+              
 |                     Select Menu                            |              
 +------------------------------------------------------------+              
 | [0] Download & Run                                         |              
 | [1] Download to flash                                      |
 | [2] Download From UART                                     |
 | [3] Boot My Application                                    |
 | [4] Boot Linux                                             |
 | [5] Boot Wince                                             |
 | [6] Erase Flash Partition                                  |
 | [7] Config parameters                                      |
 +------------------------------------------------------------+

 

选择[4]进入linux系统。开发板启动成功。

6)通过minicom将开发板切换到tmp下。并查看下面的文件,hello就是之前通过minicom下载进去的文件。

# cd /tmp                                                                       
# ls                                                                            
qtembedded-0  qtopia-0                                            
# 

7)通过minicom将hello文件复制到开发板的tmp路径下。

  在界面下,ctrl+A,Z进入功能界面选择“ Minicom Command Summary ”,选择s

+-------------------------------------------------------------------+      
|                      Minicom Command Summary                      |      
|                                                                   |      
|              Commands can be called by CTRL-A <key>               |      
|                                                                   |      
|               Main Functions                  Other Functions     |      
|                                                                   |      
| Dialing directory..D  run script (Go)....G | Clear Screen.......C |      
| Send files.........S  Receive files......R | cOnfigure Minicom..O |      
| comm Parameters....P  Add linefeed.......A | Suspend minicom....J |      
| Capture on/off.....L  Hangup.............H | eXit and reset.....X |      
| send break.........F  initialize Modem...M | Quit with no reset.Q |
| Terminal settings..T  run Kermit.........K | Cursor key mode....I |      
| lineWrap on/off....W  local Echo on/off..E | Help screen........Z |      
| Paste file.........Y  Timestamp toggle...N | scroll Back........B |      
| Add Carriage Ret...U                                              |      
|                                                                   |      
|             Select function or press Enter for none.              |      
+-------------------------------------------------------------------+ 
选择S,跳出以下界面,选择zmodem。回车。
| zmodem    |‘                                     
| ymodem    |                                      
| xmodem    |                                      
| kermit    |                                      
| ascii     |
跳出文件选择界面
ya+-------------------[Select one or more files for upload]-------------------+
ya|Directory: /tmp/demo_space                                                 |
VF| [..]                                                                      |
Mo| hello                                                                     |
Fr|                                                                           |
in|                                                                           |
st|                                                                           |
mo|                                                                           |
et|                                                                           |
if|                                                                           |
  |                                                                           |
Pl|                                                                           |.
Wa|                                                                           |
QD|                                                                           |
  |                                                                           |
st|                                                                           |
# |                                                                           |
# |              ( Escape to exit, Space to tag )                             |
# +---------------------------------------------------------------------------+
选择hello之后回车,开始将文件传给开发板。
init star+-----------[zmodem upload - Press CTRL-C to quit]------------+        
starting |Sending: hello                                               |        
mount: mo|sz: skipped: hello                                           |        
eth0: lin|                                                             |        
ifconfig:|Transfer complete                                            |        
         |                                                             |        
Please pr| READY: press any key to continue...                         |tc/dict.
Warning: |                                                             |        
QDir::rea+-------------------------------------------------------------+o
等待文件传完之后。使用ls查看tmp下文件。多了一个hello(直接打印“hello”)
# # ls                                                                          
hello         qtembedded-0  qtopia-0                                            
#
运行查看文件执行结果。
# ./hello                                                                       
Hello World                                                                     
#

文件传输完成。

 

后续增加系统的移植,dnw的操作等。。。。。。。。。。。。

注:内容通过参考网上相关介绍资料,再通过自身实际操作汇总。

 

 




以上是关于ubuntu下linux移植到开发板(持续更新)的主要内容,如果未能解决你的问题,请参考以下文章

嵌入式Linux应用初步移植MQTT到Ubuntu和Linux开发板

移植Linux-5.4+内核到4412开发板

嵌入式Linux高级案例-移植LVGL到Linux开发板

Linux系统移植—使用nfs或者ftp给开发板下载linux镜像

Linux系统移植:NXP 官板 uboot 移植

如何将Linux下的QT程序移植到arm板上