龙芯派系统安装使用教程 0. 使用说明本教程面向刚入手龙芯派的开发人员,内容简单,目的为上手开发,对于原理不作深入探讨。在此非常感谢龙芯派首发预购群的支持,其中的资深开发人员FlyGoat 、brep 、老鼠、翼辉信息-弓羽箭都给予了详尽的帮助。 本教程是对《2K龙芯派入门手册》的补充,如有冲突,以手册为准。主要内容是系统安装和入门第一个应用程序编写、编译和运行。 教程撰写仓促,后期还须完善,不到之处请谅解。 1. 龙芯派与常规嵌入式系统(如智龙开发板)的差异1.1 系统安装的区别龙芯派硬件不含Flash,因此内核都必须从SD卡、U盘或者网络加载。同时文件系统也存于这些介质上。 智龙开发板的内核和文件系统是存放在板上的Flash芯片上的,当然智龙开发板的内核也可以与龙芯派一样从SD卡、U盘或者网络加载。 1.2 程序的编译与执行龙芯派运行内存有2G,且有HDMI标准显示输出,等同于一台微型卡片电脑,因此完全可以在龙芯派上编辑、编译并运行程序。 而智龙开发板Flash为1G,内存为256M,无法安装编译工具链,因此智龙开发板的程序都是在宿主机上编译后再通过网络或其它存储介质将目标文件下载到开发板执行。 2. 内核系统与启动盘制作概述龙芯派目前提供三种系统的安装,为Loongnix、CentOS和SylixOS。其中Loongnix与CentOS类似,安装时需要复制2部分内容:内核与文件系统,且这两种系统使用的内核相同。SylixOS采用官方提供的一键安装工具制作启动盘直接完成。 龙芯派采用启动盘启动。启动盘可使用U盘或者SD卡。下面以U盘(插入USB读卡器的SD卡等同于U盘)为例制作启动盘。启动盘上必须存放必要的内核及系统。 2.1 内核和文件系统下载内核和文件系统都是从龙芯派的官网ftp下载,网址为: ftp://ftp.loongnix.org/loongsonpi/。 acoinfo 目录下为翼辉SylixOS 操作系统手册、开发环境及启动盘制作方法。 OS目录下为Linux内核及系统。Loongnix和 CentOS 系统使用相同的内核。 Linux内核为: ftp://ftp.loongnix.org/loongsonpi/os/new_fedora21/vmlinux Loongnix系统为: ftp://ftp.loongnix.org/loongsonpi/os/new_fedora21/fedora21.tar CentOS 系统为: ftp://ftp.loongnix.org/loongsonpi/os/CentOS6.4-Multilibs-mips64-RC2-Build009-20150701.iso 2.2 启动盘制作方法翼辉SylixOS 操作系统的启动盘制作使用专用的一键安装工具,使用方便。 基于Linux内核和Loongnix 、CentOS 系统的启动盘必须自行制作,制作环境必须是 Linux 操作系统。可在虚拟机开启Linux 操作系统制作启动盘,也可以使用安装Linux 操作系统的机器制作。这里采用虚拟机的方法。 3. Loongnix系统安装及程序编译执行3.1 启动盘分区格式化开启虚拟机,插入启动盘。这时Windows系统(主机)提示有USB设备插入,如图1所示。 图1 主机插入U盘后提示 此时要在主机将此USB设备弹出,虚拟机才能连接USB设备。接着在虚拟机的可移动设备中连接此USB设备。 图2 虚拟机连接U盘 在终端使用命令查看连接的USB设备,可看到已经连接的USB设备。 root@ubuntu:~# fdisk –l //查看当前分区 …… Device Boot Start End Sectors Size Id Type /dev/sdb1 * 2048 60063743 6006169628.7G c W95 FAT32 (LBA) 最后1行即为已经连接的USB设备,此USB设备已经分区为1个,文件系统为FAT32。下面进行重新分区、格式化、挂载,并复制内核和文件系统。 1)分区 root@ubuntu:~# fdisk /dev/sdb //操作分区 /dev/sdb Welcome to fdisk (util-linux 2.27.1). Changes will remain in memory only, until youdecide to write them. Be careful before using the write command. Command (m for help): d //删除分区 Selected partition 1 //选择分区1,直接按Enter键 Partition 1 has been deleted. Command (m for help): n //新建分区 Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): //缺省为主分区,直接按Enter键 Using default response p. Partition number (1-4, default 1): //缺省为分区1,直接按Enter键 First sector (2048-60063743, default 2048): //停顿处直接按Enter键 Last sector, +sectors or +size{K,M,G,T,P}(2048-60063743, default 60063743): +512M //第一分区为512M Created a new partition 1 of type 'Linux' and ofsize 512 MiB. Command (m for help): n //新建分区 Partition type p primary (1 primary, 0 extended, 3 free) e extended (container for logical partitions) Select (default p): //缺省为主分区,直接按Enter键 Using default response p. Partition number (2-4, default 2): //缺省为分区2,直接按Enter键 First sector (1050624-60063743, default 1050624): Last sector, +sectors or +size{K,M,G,T,P}(1050624-60063743, default 60063743): //缺省剩下容量,直接按Enter键 Created a new partition 2 of type 'Linux' and ofsize 28.1 GiB. Command (m for help): w //保存退出 The partition table has been altered. Calling ioctl() to re-read partition table. Re-reading the partition table failed.: Device orresource busy The kernel still uses the old table. The new tablewill be used at the next reboot or after you run partprobe(8) or kpartx(8). root@ubuntu:~# fdisk –l …… Device Boot Start End Sectors Size Id Type /dev/sdb1 2048 1050623 1048576 512M 83 Linux /dev/sdb2 1050624 60063743 59013120 28.1G 83 Linux 使用的命令总结,其它的均按Enter键。 fdisk –l //查看当前分区 fdisk /dev/sdb //操作分区 /dev/sdb d //删除分区 n //新建分区 +512M //第一分区为512M w //保存退出 2)格式化 使用mkfs命令格式化分区为ext3类型。 root@ubuntu:~# mkfs.ext3 /dev/sdb1 mke2fs 1.42.13 (17-May-2015) /dev/sdb1 contains a vfat file system Proceed anyway? (y,n) y /dev/sdb1 is mounted; will not make a filesystemhere! root@ubuntu:~# 提示/dev/sdb1已经挂载,不能格式化。使用命令缷载USB设备后格式化。 root@ubuntu:~# umount /dev/sdb1 root@ubuntu:~# mkfs.ext3 /dev/sdb1 //格式化第一个分区 mke2fs 1.42.13 (17-May-2015) /dev/sdb1 contains a vfat file system Proceed anyway? (y,n) y Creating filesystem with 7507712 4k blocks and1880480 inodes Filesystem UUID:0ad55ff6-70ec-496d-8399-57c6c27e5a67 Superblock backups stored on blocks: 32768,98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accountinginformation: //停顿处,直接按Enter键 Done root@ubuntu:~# mkfs.ext3 /dev/sdb2 //格式化第二个分区 mke2fs 1.42.13 (17-May-2015) Creating filesystem with 7376640 4k blocks and1844160 inodes Filesystem UUID: b6f5661a-cfb7-4958-9483-e5a40e4762c1 Superblock backups stored on blocks: 32768,98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accountinginformation: //停顿处,直接按Enter键 done 使用的命令总结,其它的均按Enter键。 umount /dev/sdb1 //缷载U盘分区1 mkfs.ext3 /dev/sdb1 //格式化U盘分区1为ext3 mkfs.ext3 /dev/sdb2 //格式化U盘分区2为ext3 3.2 复制、解压内核及系统将2.1中下载的Linux内核/loongsonpi/os/new_fedora21/vmlinux 复制到分区1根目录下。解压并复制后的分区1如图3所示。 图3 Loongnix系统分区1 将2.1中下载的Loongnix系统/loongsonpi/os/new_fedora21/fedora21.tar 解压并复制到分区2的根目录下,解压的时间会很长(30分钟以上)。解压并复制后的分区2的文件系统如图4所示。 图4 Loongnix系统分区2 启动盘的分区1和分区2制作好后,不能立刻从USB接口拔下。首先执行语句进行回写,这条命令可多执行几次。 sync //回写磁盘 然后缷载启动盘,使用命令umount。 root@ubuntu:~# umount /dev/sdb1 root@ubuntu:~# umount /dev/sdb2 最后,在虚拟机的可移动设备中操作断开连接后才能拔出USB设备,如图5所示。 图5 虚拟机中断开启动盘连接 3.3 在PMON中设置启动位置龙芯派依靠PMON引导内核。在PMON的界面下可进行系统启动运行的配置。PMON为引导内核启动的代码,存放在板载芯片SST25VF0332B上,系统上电后首先运行PMON。 龙芯派的串口与USB-TTL转接线连接。USB-TTL转接线的USB接口接入主机,TTL接口接上龙芯派的串口0 (具体参考《2K龙芯派入门手册》)。主机上打开PuTTY软件,连接控制台。龙芯派接上电源后,按开机键。PuTTY控制台在开机后出现提示符的3秒内,按键盘上除了 Enter 键之外的任何按键,都可进入PMON。如图6所示。 图6 龙芯派开机后在PuTTY控制台按任意键进入PMON 首先查看当前的环境,在PuTTY控制台中输入 env 命令后按Enter键,如图7所示。 图7 龙芯派启动后进入PMON 其次输入命令配置启动内核的位置。龙芯派可使用USB接口连接启动盘(U盘或者USB读卡器),也可以使用SD卡座连接启动盘(SD卡)。 使用SD卡上的内核和系统时,输入命令: set al1 /dev/fs/ext2@sdcard0/vmlinux set append "console=ttyS0,115200 console=ttyroot=/dev/mmcblk0p2 rootdelay=10 video=ls2k-fb:800x600-16@60" 使用USB接口的U盘(或者插入USB读卡器的SD)上的内核和系统时,输入命令: set al1 /dev/fs/ext2@usb0/vmlinux set append "console=ttyS0,115200 console=ttyroot=/dev/sda2 rootdelay=10 video=ls2k-fb:800x600-16@60" 使用TFTP网络启动时,输入命令: g 3.4 系统启动、程序编译执行1)系统启动 3.3的启动配置好后,输入reboot重启龙芯派。成功重启后,大约经历3分钟后,控制台显示要求输入用户名和密码。这里输入用户名 root ,密码为 loongson,如图8所示。 图8 Loongnix启动控制台界面 Loongnix中查看编译器,如图9所示。 图9 Loongnix中查看编译器 如果插上了HDMI显示器,则同时从显示器输出。 这里由于启动过慢,按照brep的建议,建议改成控制台登录,登录命令如下: systemctl set-default multi-user.target 具体修改参考龙芯俱乐部开源社区中《龙芯派loongnix系统的一些后续设置》: http://www.openloongson.org/forum.php?mod=viewthread&tid=22689&extra=page%3D1 2)应用程序编译、运行 编写helloworld.c文件: #include <stdio.h> int main(void) { printf("HelloWorld! This is Loongnix!\n"); return 0; } 复制到U盘到,插到龙芯派上。如图10所示。 图10 简单应用程序复制、编译和运行 1)挂载U盘 [root@localhost apps]# mount /dev/sda1 ~/mnt/sd1 2)将文件helloworld.c复制到 ~/apps: [root@localhost apps]# cp ~/mnt/sd1/helloworld.c~/apps 3)编译文件: [root@localhost apps]# gcc helloworld.c -ohelloworld 4)运行目标文件: [root@localhost apps]# ./helloworld Hello World! This is Loongnix! 4. CentOS系统安装及程序编译执行4.1 启动盘制作启动盘分区格式化同3.1。 将2.1中下载的Linux内核/loongsonpi/os/new_fedora21/vmlinux 复制到分区1根目录下。解压并复制后的分区1如图11所示。 图11 CentOS系统分区1 将2.1中下载的CentOS 系统 /loongsonpi/os/CentOS6.4-Multilibs-mips64-RC2-Build009-20150701.iso解压并复制到分区2的根目录下,解压的时间会很长(30分钟以上)。 解压后并复制后的分区2的文件系统如图12所示。 图12 CentOS系统分区2 在CentOS系统分区1和分区2还要修改一些配置, 如图13所示。 图13 启动盘配置的修改 1) 分区2 /boot 目录修改,添加 boot.cfg 文件, 2) 内核复制到分区2 /boot 目录下。 3)分区2 /etc/X11/xorg.conf.d/xorg.conf.2h文件如下修改 Driver "fbdev" #Driver "vivante" ...... #Option "VivCacheMem" "false" 最后同3.2缷载启动盘。 4.2 在PMON中设置启动位置此部分内容与3.2相同。 4.3 程序编译执行开机后加载内核,后启动系统。控制台启动到图14 时,就不再从串口控制台输出(后期再调试希望能从从控制台登录),转而向显示器输出。 图14 CentOS启动后控制台输出的停止界面 显示器显示登录界面,提示输入用户名密码。输入用户名为root,密码为loongson,如图15、图16所示。 图15 提示输入用户选择other..按钮 图16 以用户root登录 在目录/apps/下新建文件helloworld.c,进行编辑保存,如图17所示。 图17 新建helloworld.c文件 在helloworld.c所在文件夹中点击鼠标右键,选择“Open in Terminal”选项,打开终端,如图18所示。 图18 打开终端 在终端中输入编译和运行命令: gcc helloworld.c -o helloworld ./helloworld 运行结果如图19所示。 图19 编译和运行第一个简单应用程序 5. 翼辉SylixOS 操作系统安装及程序编译执行5.1 启动盘制作下载官方网站的一键安装工具来制作启动盘。下载地址为: 制作方法参考文档《2K龙芯派翼辉SylixOS操作系统使用手册》下载地址为: ftp://ftp.loongnix.org/loongsonpi/acoinfo/2K龙芯派翼辉SylixOS操作系统使用手册v1.0.1.pdf。 5.2 在PMON中设置启动位置使用SD卡上的内核和系统时,输入命令: set al1 /dev/fs/fat@sdcard0/bspls2klspi.elf 使用USB接口的U盘(或者插入USB读卡器的SD)上的内核和系统时,输入命令: set al1 /dev/fs/fat@usb0/bspls2klspi.elf 使用TFTP网络启动时,输入命令: g 5.3 程序编译执行1)启动系统 下载SylixOS 的IDE,下载地址为: ftp://ftp.loongnix.org/loongsonpi/acoinfo/RealEvo-IDE/SylixOSIDE 3.7.3 EXP.iso 下载后安装。安装过程中要求输入注册码,这时手机扫描龙芯派上的二维码,可得到一个体验版本的license,输入即可。如果龙芯派上没有二维码,则通过翼辉信息官方网站http://www.acoinfo.com/html/experience.php 填写申请信息申请试用RealEvo-IDE 龙芯翼辉集成开发套件。 IDE的运行和程序编译执行可参考《2K龙芯派翼辉SylixOS操作系统使用手册》。 启动后控制台界面如图20 所示 图20 翼辉SylixOS控制台启动界面 2)编程、下载和运行 在IDE中编写程序,后 upload 如图21 所示,提示上传成功。且上传文件的目录在/apps/helloworld/helloowrld。 图21 翼辉SylixOS 操作系统IDE编辑、上传程序 到控制台查看文件,并运行,如图22 所示。 图21 翼辉SylixOS 操作系统控制台运行程序 6. 总结一共三种系统,每个系统都有其优点。 从安装和使用角度,翼辉SylixOS 操作系统安装及程序编译执行是最方便和快速的,尤其对于新手和没有安装Linux系统(虚拟机或者专门的Linux机器)的用户,入门极其快速方便。同时《2K龙芯派翼辉SylixOS操作系统使用手册》所提供的支持和帮助也是其它操作系统开发不能够比的。可以看到本教程主要内容几乎都Linux系统,而翼辉SylixOS操作系统很少,因为《2K龙芯派翼辉SylixOS操作系统使用手册》已经解释得很详尽了。 当然如果需要学习Linux或者希望在Linux系统下进行应用开发,就有了安装Loongnix 或CentOS的必要了。 孙冬梅 2018/6/24
|