百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

FM20S用户手册-Linux系统使用手册

sinye56 2024-11-17 15:40 2 浏览 0 评论

评测试板卡介绍

创龙科技TLFM20S-EVM是一款基于复旦微FMQL20S400M四核ARM Cortex-A7(PS端) + FPGA可编程逻辑资源(PL端)异构多核SoC处理器设计的全国产工业评估板,PS端主频高达1GHz。核心板CPU、ROM、RAM、电源、晶振、连接器等所有器件均采用国产工业级方案,国产化率100%。同时,评估底板大部分元器件亦采用国产工业级方案。核心板经过专业的PCB Layout和高低温测试验证,质量稳定可靠,可满足各种工业应用环境要求。

评估板接口资源丰富,引出2路Ethernet、4路USB2.0、2路CAN、2路RS485、RS232等接口,方便用户快速进行产品方案评估与技术预研。

图 1 评估板正面图

图 2 评估板斜视图

图 3 评估板侧视图1

图 4 评估板侧视图2

图 5 评估板侧视图3

图 6 评估板侧视图4

1Bootloader文件编译

1.1 FSBL编译

FSBL(First StageBootloader)为一级Bootloader程序,我司提供的FSBL源码中己对PS 端相关外设进行配置。

1.1.1 FSBL编译

(1)请在Windows非中文路径下,新建"FMQLVFSBL\"目录,用于存放FSBL源码。将 产品资料“4-软件资料\Linux\FSBL\srd”目录下“sbH版本号].ap”压缩包拷贝至此 目录并解压,如下图所示,版本号请以实际情况为准

解压后的FSBL源码目录中的%sbl-xx\fsbl.fpe”为Procise工程文件,“SDK\fsbL_platf orm\fsbl_platform.eww"为IAR工程文件。

(2)打开Procise软件,点击"Open Project",选择FSBL源码目录的Procise工程文件, 点击Open打开,如下图所示

(3)在弹出的界面,依次点击"Open Block Design >fsbl.bd",可查看Procise工程的

Block Design框图,如下图所示。

(4)在菜单栏依次点击"Project->Launch IAR",使用IAR打开FSBL源码的IAR工程文 件。

(5)弹出如下窗口,点击OK,将会自动打开IAR软件,如下图所示。 备注:若未弹出如下窗口,请参考本文“FSBL修改说明”章节重新生成IAR工程。

(6)在IAR软件右键工程,点击”Rebuild AI“进行IAR工程编译,如下图所示。

(7) 编译完成后,在Build窗口将会打印相关信息,如下图所示。

同时,将会在工程源码"SDK\sbl_platformVFSBL\Debug\Exe\"路径下生成FSBL.out文 件,该文件用于与U-Boot镜像一起合并生成BOOT.bin文件。

1.1.2 FSBL配置说明

我司提供的FSBL源码对PS端相关配置如下所示,用户可直接基于提供的FSBL镜像 进行开发。FSBL将会初始化对应外设的时钟,相关外设资源直接配置设备树和加载PL端

程序即可使用。

外设配置内容:DDR、QSPI、Ethernet0/1、SD0、SD1(eMMC)、UARTO/1、12C0/1、SPI0/1、

CANO/1、GPIO MIO、Timer0/1、Watchdog、PJTAG(EMIO JTAG)、AXIHP/GP。 时钟配置内容:4路PL FabricCloks(PS 提供给 PL的时钟):

FCLK_CLKO=100MHz

FCLK_CLK1=200MHz

FCLK_CLK2=250MHz

FCLK_CLK4=50MHz

中断配置内容:PL>PS 中断端口:IRQ_F2P[15:0]

工程 Block Design 框图如下:

双击 Procise 工程的 Block Design框图,进入配置界面。

(1) 点击"PS-PL Configuration",即可查看和配置。

(2)点击"MIO Configuration",即可查看和配置PS端外设资源。

(3)点击"Clock Configuration",即可查看和配置时钟。

备注:由于我司评估底板的MicroSD接口电路使用了电平转换芯片,对速率有限制,因 此SDIO时钟不能大于20MHz。

(4)点击"DDR Configuration",即可查看和配置DDR。

(5)点击"nterrupts",即可查看和配置中断。

1.1.3 FSBL修改说明

在实际开发中,若对FSBL源码Procke工程的IP核配置有所改动,需按如下步骤重 新导出IAR工程,并生成镜像文件。

(1)鼠标右键fsbl (fsbl.bd),点击"Generate Output Products.."选项。

(2)依次点击菜单栏"Project→Export Hardware"导出IAR工程,如下图所示

(3)在弹出的界面勾选FSBL,点击OK即可重新生成IAR工程。

同时,Con sole窗口打印如下信息。

(4)依次点击菜单栏"Project>Launch IAR",打开IAR工程。

(5)打开"FSBLVFM_QL_fsblymain.c"文件,在mainQ函数中的"BootStage =BOOT_STAG E2;"代码后面增加核心板用户可编程指示灯的控制代码。

/*Set MO14 output /

FMSH_WriteReg(FPS_GPIO_BASEADOR,0x04,0x4000; /*Set MIO14 output high tolight upthe som+kd37 FMSH_WriteReg(FPS_GPIO_BASEADOR,0x00,0x4000;

(6)打开"FM_QL_hw_platform\ps_init.c“文件,找到数组"unsigned long ps_ddr_init_d ata]",然后点击左边的甲图标并选中该数组进行拷贝。

(7)拷贝完成后粘贴该数组至原数组下方,然后更改数组名称为"unsigned long ps_d dr_init_data_512MBytel]。

(8)在"unsigned long ps_ddr_init_data_512MByte[]"数组内找到"Bank 2-0"并修改为 红色方框寄存器的值(目的为了兼容512MByte DDR3)。

EMIT_MASKWRITE(DDR_UMC_REG_BASE+0x204,0:0000003fu,00000016U),

EMIT_MASKWRITE([DDR_UMC_REG_BASE+0×204,0:00003f00U,000001600U),

EMIT_MASKWRITE(DDR_UMC_REG_BASE+0×204,000310000u,0.00160000U),

(9)在ps_jnit()函数增加判断DDR3容量功能的代码和变量"ram_size"定义,如下所示。 添加如下红色方框代码:

long ram_ste;

/Automatically detect DOR capacity site

ram_sizen get_ram_sitel(long")0x001000000=40000000; if (ram_size<0×20000011K //512MByte DDR init

ret =p5_config(ps_dr_init_data_512MBytel; f (ret !=PS_NIT_sUCCESS retum ret

(10)在ps_Iinit()函数上方增加get_ram_stve)函数实现。

(11)打开FM_QL_hw_pltform\ps_inth“文件,在ps_inith文件增加get_ram_slze()函 数定义。

(12)在ps_init.c文件下找到"unsigned long ps_pll_Init_data["数组。

在数组内找到"CPU_PLL_CLKOUTI_DMSOR=47",在上方6行代码中,修改为红框的 值。

在数组内找到"CPU_PLL_CFG",在下方2行代码中,修改红框的值:

在数组内找到"DDR PLLCFG",在上方12行代码中,修改为红框的值

(13)找到"unsigned long ps_dlock_init_data[“数组,在数组内找到"ENETO TX CLK so URCE =10 PLL",在上方14行代码中,修改为红框的值。

(14)上述配置完成后,点击图标保存所有文件,然后右键工程,点击"Rebuild AI" 重新编译工程。

1.2 U-Boot编译

U-Boot为二级Bootloader程序。

1.2.1安装、清理U-Boot源码

打开Ubuntu,执行如下命令创建U-Boot源码安装目录。

Host#mkdir -p /home/fmsh/FMQL/U-8oot-2018.07

将产品资料“4-软件资料\Linux\U-Boot\srt\”目录下的U-Boot源码压缩包文件“u-b

oot-2018.07-fmsh-[版本号HGit系列号]tar.g:”拷贝至"/home/fmsh/FMQL/"工作目录下, 并执行如下命令将其解压至U-Boot源码安装目录,版本号和Git系列号请以实际情况为 准。

Host#cd /home/fmsh/FMQL Host#tar -zxf u-boot-2018.07-fmsh-v1.0-gOced0d4.tar.gz-C U-Boot-2018.07/

执行如下命令,进入LinuxSDK安装目录,使能环境变量后,进入U-Boot源码目录清

理U-Boot源码。

Host#cdFMQL-Linux-SDK-Prj-20230801/ Host#source./env.sh Host#cd ../U-Boot-2018.07/ Host#make distclean

清理命令删除的文件范围从小到大依次为:make cean<make mrproper<make

distclean。命令具体解析如下:

1.2.2配置U-Boot编译选项

执行如下命令对U-Boot编译选项进行配置。

此命令通过U-Boot源码中的“configs/fmql_common_defconfig”文件对U-Boot编译选 项进行配置,并保存编译选项配置信息至当前目录新生成的.config文件中。

Host#make fmql_common_defconfg

如需修改U-Boot的编译配置选项,可继续执行”make menuconfig”命令打开图形化配

置界面。此命令通过读取新生成的.confg文件,以图形界面的方式提供U-Boot编译选项

配置查看和修改方法。如无需修改U-8oot编译选项配置,可跳过此步骤。

menuconfig是一套图形化的配置工具,需要ncurses库支持。ncurses库提供了一系 列的API函数供调用者生成基于文本的图形界面,执行如下命令启动menuconfig配置界 面。

Host#makemenuconfig

可通过键盘的方向键选中对应菜单栏。在<Selec>被选中的情况下,可按Enter键进 入子菜单。菜单选项中蓝色高亮的字母代表此菜单选项的快捷键,可在键盘上按下对应 的字母快速选中对应的菜单选项。

每个菜单选项前的括号内容表示当前菜单选项的配置状态。选中对应的菜单选项后 按下Y键,会将相应的选项配置编译到U-8oot中,同时菜单选项前面变为<*>。按下N 键,不会将相应的选项配置编译到U-Boot中。如需搜索,可按下/键打开搜索框,然后 输入要搜索的内容。

配置完毕后,选中<Save>,按Enter键保存配置选项。然后选中<Exit>,按Enter键退 出。


1.2.3编译U-Boot镜像

执行如下命令进行U-Boot编译。命令中的j16”是一个编译选项,它指定操作系统使 用多少线程去执行编译,可加快编译速度。如不加编译选项,则默认使用单线程进行编 译。

Host#make -16

编译完成后,将会在U-Boot源码的顶层目录生成U-Boot镜像文件u-boot。

1.3生成BOOT.bin文件

使用Procise软件将FSBLout和u-boot文件合并生成BOOT.bin文件。

(1)请将编译生成的FSBLout和u-boot文件拷贝至Wndows同一个非中文目录下

并将u-boot文件重命名为u-boot.elf。

(2)打开Procise软件,依次点击菜单栏"PSOC>Create Boot Image"。

(3)在弹出的界面,点击"Browse",依次选择配置文件output.bif输出路径和 BOOT.bin的输出路径,然后点击Add.添加FSBL和U-Boot镜像。

(4)在弹出的界面,点击"Browse-",选择FSBLout文件的路径,Partition type选择 bootloader,Destination CPU选择APUx32。配置完成,点击OK。

(5)继续点击Add,弹出如下界面,点击"Browse",选择u-boot.elf文件的路径

Partition type选择datafile,Destination CPU选择APU0。配置完成,点击OK。

(6)点击"℃reate Image",生成B0OT.bin文件。

镜像生成后,将会弹出如下窗口,并在输出目录下生成BOOT.bin文件。

1.4运行BOOT.bin文件

请将BOOT.bin拷贝至Linux系统启动卡BOOT分区目录,替换Linux系统启动卡BOOT 分区目录下原有的对应文件。评估板断电,将替换BOOT.bin文件后的Linux系统启动卡 插入评估板Micro SD卡槽,根据评估底板丝印将启动方式选择拨码开关拨为1010(1~4), 此档位为Micro SD启动模式

请通过Type-C线连接评估板USB TO UARTO调试串口至PC机USB端口,然后将评估 板上电,串口调试终端将会打印类似如下启动信息,说明从Linux系统启动卡启动 BOOT.bin成功。

备注:如需将B0OT.bin文件替换至SPI FLASH,请将其拷贝至评估板文件系统,将启动方

式选择拨码开关拨为1000(1~4),此档位为SPI启动模式。

从SPI FLASH+eMMC启动评估板,执行如下命令,固化BOOT.bin文件至SPI FLASH 的MTD0分区,重启评估板即可生效。

Tar get# fash_erase/dev/mtd000 Tar get# ddif=/root/BOOT.bin of-/dev/mtd0 Target#sync &&reboot

2 U-Boot命令和环境变量说明

评估板上电启动后,在U-Boot倒计时结束之前按下任意键进入U-Boot命令行模式

执行help或者?命令,可查看当前U-8oot所支持的命令。

U-Boot> help

执行命令setenv或"env default-a"修改的是运行空间中的环境变量值,需使用saveenv

命令将修改后的环境变量保存起来。否则U-Boot重启后,将会使用以前的环境变量值。

环境变量修改完成后,执行reset命令,即可使用修改后的U-Boot环境变量启动。

U-Boot>env default -f-a

U-Boot>saveenv

U-Boot>reset

在U-Boot命令行中执行printenv命令可查看环境变量,如下提供主要U-Boot环境变

量的解析说明。不同版本的U-Boot,环境变量可能会有所不同,内容仅供参考。

3 Linux内核编译

3.1安装、清理内核源码

打开Ubuntu,执行如下命令创建内核源码安装目录。 Host#mkdir -p/home/fmsh/FMQL/Kernel/Linux-4.14.55

将产品资料“4-软件资料\Uinux\Kernel\sre\”目录下的内核源码压缩包文件“Iinux-4.

14.55-fmsh-版本号HGit系列号].tar ga”拷贝至"/home/fmsh/FMQL/"工作目录下,并在"/ home/fmsh/FMQL/"目录执行如下命令将其解压至内核源码安装目录,版本号、Git系列 号请以实际情况为准。

Host#tar-xuf linux-4.14.55-fmsh-v1.0-gea84534.tar.gz-CKernel/Linux-4.14.55/

执行如下命令,进入LinuSDK安装目录,使能环境变量后,再进入内核源码目录清 理内核源码

Host#cdFMQL-Linux-SDK-Prj-20230801/ Host#source./env.sh Host#cd../Kermel/Linux-4.14.55/ Host#makedistclean

3.2配置内核编译选项

执行如下命令对内核编译选项进行配置

此命令通过内核源码中的"arch/arm/confgs/Imsh_fmql_defconfig"文件对内核编译选 项进行配置,并保存编译选项配置信息至当前目录新生成的.config文件中。

Host#make fmsh_fmql_defconfig

如需修改内核编译选项配置,可继续执行”make menuconfig”命令打开图形配置界面。 此命令通过读取当前目录的.config文件,以图形界面的方式提供内核编译配置查看和修 改方法。如无需修改内核编译选项配置,可跳过此步骤。

Host#make menuconfig

可通过键盘的方向键选中对应菜单栏。在<Select>被选中的情况下,可按Enter键进 入子菜单。菜单选项中蓝色高亮的字母代表此菜单选项的快捷键,可在键盘上按下对应 的字母快速选中对应的菜单选项。

每个菜单选项前的括号内容表示当前菜单选项的配置状态。选中对应的菜单选项后, 按下Y键,会将相应的选项配置编译到内核中,同时菜单选项前面变为<*>。按下N键, 不会将相应的选项配置编译到内核中。按下M键,会将相应的选项配置编译为内核模块, 菜单选项前面变为<M>。如需搜索,可按下/键打开搜索框,然后输入要搜索的内容

配置完毕后,选中<Save>,按Enter键保存配置选项。然后选中<Exit>,按Enter键退 出。

3.3编译内核情像、内核模块

在内核源码安装目录下,执行如下命令编译内核镜像。命令中的"-j16"是一个编译选 项,它指定操作系统使用多少线程去执行编译,可加快编译速度。如不加编译选项,则 默认使用单线程进行编译。

Host#make -j16

首次编译内核耗时较长,大约需要5~10min。编译完成后,将会在内核源码安装目 录"arch/arm/boot/"路径下,生成内核镜像文件amage。

我司提供的内核镜像、内核模块进行了版本管理,而本地重新配置与编译生成的内 核镜像,其版本号将与我司提供的内核镜像版本号不一致。如直接使用本地重新生成的 内核镜像替换默认提供的内核镜像,因文件系统中的内核模块与新的内核镜像版本不一 致而无法正常安装内核模块。因此,本地首次需重新编译内核模块使其与新的内核镜像 版本一致。如本地再次配置与编译生成内核镜像时,则无须同时编译内核模块,即内核 模块仅需重新编译一次。

在内核源码安装目录下,执行如下命令编译内核模块。

Host#make modules-]16

编译完成后,将在各驱动源码目录下生成对应的驱动安装文件。

3.4编译设备树文件

我司提供的基础设备树源文件位于内核源码"arch/arm/boot/dts/"目录下。基础设备树

文件主要描述评估板的基础硬件设备(比如LED、KEY等通用外设),系统启动时自动加 载其对应的dtb文件。

若设备树文件不作改动,则无需重新编译生成二进制设备树文件,使用默认提供的 dtb文件进行开发即可。若设备树文件有所改动,则需重新编译生成二进制设备树文件 编译命令格式如下

dtb设备树文件:make*.dtb

·代表dts文件名的前缓,命令会根据前缓在内核源码"arch/arm/boot/dts/"目录下找 到对应的dts文件进行编译,生成dtb文件。

在内核源码目录下,执行如下命令编译设备树,将会在内核源码目录"arch/arm/boot /dts/"路径中编译生成dtb文件tlfm20s-evm.dtb。

Host#make tlfm20s-evm.dtb

3.5安装镜像至Linux系统启动卡

将Linux系统启动卡通过读卡器插至PC机,并将其成功挂载至Ubuntu系统。本次操 作演示的Linux系统启动卡挂载路径为"/media/fmsh/"。

在内核源码目录下,执行如下命令将重新编译生成的内核镜像zImage、基础设备树 dtb文件tfm20s-evm.dtb拷贝至Uinux系统启动卡rootfs分区boot目录下。 Host#sudocp arch/arm/boot/lmage/media/imsh/rootfs/boot Host#sudocparch/arm/boot/dts/tufm20s-evm.dtb /media/fmsh/rootfs/boot

进入Linux系统启动卡roots分区boot目录下,执行如下命令重新将tlfm20s-evm.dtb

软链接为fmql-evm.dtb。系统启动时将使用文件系统boot目录下的fmglevm.dtb设备树

文件,由于fmqlevm.dtb为tfm20s-evm.dtb设备树文件的软链接,因此实际使用的设备

树文件为tlfm20s-evm.dtb。

Host#sudo rm fmqlevm.dtb Host#sudo In stfm20s-evm.dtbfmq-evm.dtb

在内核源码目录下,执行如下命令将重新编译生成的内核模块驱动安装.ko文件安装 至Linux系统启动卡roots分区7ib/modules/<kernel_release>/"目录下的相关路径中。若 本地未使用版本管理工具,<kernel_release>一般为4.14.55-fmsh。

Host#sudo make ARCH=arm modules_hstall INSTALL_MOD_PATH=/edia/fmsh/rootfs/

至此,内核、内核模块和设备树替换完成。评估板断电,将替换相关文件后的Linux 系统启动卡插入评估板Micro SD卡槽,根据评估底板丝印将启动方式选择拨码开关拨为

1010(1~4),此档位为Micro S0启动模式,评估板即可正常启动。

4系统信息查询

评估板系统启动后,会自动登录root用户,可参照如下方法查询系统相关信息。

(1)执行如下命令查看操作系统登录欢迎信息。

Tar get#

cat /etdisue

操作系统登录欢迎信息记录在"/etc/isue"文件,直接修改此文件内容改变系统登 录信息。

(2)执行如下命令查看计算机名字

Tar get#hostname

主机名字记录在"/etc/hostname"里面,可修改此文件内容改变主机名字

(3)执行如下命令可查看当前Linux内核版本,详细信息解析如下表。

Target#cat/proc/version

(4)执行如下命令查看CPU使用率

Target#top

(5)执行如下命令查看内存使用情况。

Target# cat/proc/meminfo

(6)执行如下命令查看系统环境变量信息。

Target#eny

(7)执行如下命令可查看文件系统支持库的存放目录

Target#is /us/lib

(8)分别执行如下命令,查看内核镜像、设备树文件和内核模块存放目录。

Target#s /boot/

//存放内核镜像和设备树文件

Tar get#

s /lib/modules/4.14.55-fmsh-gea84534/

/存放内核模块

(9)执行Ismod命令可查看当前系统状态下已加载的内核模块。

Target#smod

5内存分配说明

Linux系统对核心板PS端DDR3内存分配情况如下表所示。

执行如下命令,可查看内核管理的内存空间。下图为512MByte DDR3配置核心板的 查询结果。

(1)执行如下命令,可查看内核管理的内存空间。

Tar get# mount t debugfs debug /sys/kerneVdebug Target# cat /sys/kernel/debug/memblock/memory

其中0x00000000~0x01000000的内存空间,默认由内核预留分配,不推荐使用。

(2)执行如下命令查看内核己经分配的内存

cat /sys/kernel/debug/memblock/reserved

编号2为设备树地址空间,其余为内核管理空间。其中,CMA的地址范围由内核自 动分配。

设备树地址空间与U-Boot环境变量fdt_high参数配置有关。驱动会根据fdt_high参 数的值,分配设备树加载的地址空间,但该地址空间不超过fdt_high参数的值。

相关推荐

Linux在线安装JDK1.8

首先在服务器pingwww.baidu.com查看是否可以连网然后就可以在线下载一、下载安装JDK1.81、在下载安装的同时做好一些准备工作...

Linux安装JDK,超详细

1、了解RPMRPM是Red-HatPackageManager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux...

Linux安装jdk1.8(超级详细)

前言最近刚购买了一台阿里云的服务器准备要搭建一个网站,正好将网站的一个完整搭建过程分享给大家!#一、下载jdk1.8首先我们需要去下载linux版本的jdk1.8安装包,我们有两种方式去下载安装...

Linux系统安装JDK教程

下载jdk-8u151-linux-x64.tar.gz下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.ht...

干货|JDK下载安装与环境变量配置图文教程「超详细」

1.JDK介绍1.1什么是JDK?SUN公司提供了一套Java开发环境,简称JDK(JavaDevelopmentKit),它是整个Java的核心,其中包括Java编译器、Java运行工具、Jav...

Linux下安装jdk1.8

一、安装环境操作系统:CentOSLinuxrelease7.6.1810(Core)JDK版本:1.8二、安装步骤1.下载安装包...

Linux上安装JDK

以CentOS为例。检查是否已安装过jdk。yumlist--installed|grepjdk或者...

Linux系统的一些常用目录以及介绍

根目录(/):“/”目录也称为根目录,位于Linux文件系统目录结构的顶层。在很多系统中,“/”目录是系统中的唯一分区。如果还有其他分区,必须挂载到“/”目录下某个位置。整个目录结构呈树形结构,因此也...

Linux系统目录结构

一、系统目录结构几乎所有的计算机操作系统都是使用目录结构组织文件。具体来说就是在一个目录中存放子目录和文件,而在子目录中又会进一步存放子目录和文件,以此类推形成一个树状的文件结构,由于其结构很像一棵树...

Linux文件查找

在Linux下通常find不很常用的,因为速度慢(find是直接查找硬盘),通常我们都是先使用whereis或者是locate来检查,如果真的找不到了,才以find来搜寻。为什么...

嵌入式linux基本操作之查找文件

对于很多初学者来说都习惯用windows操作系统,对于这个系统来说查找一个文件简直不在话下。而学习嵌入式开发行业之后,发现所用到的是嵌入式Linux操作系统,本想着跟windows类似,结果在操作的时...

linux系统查看软件安装目录的方法

linux系统下怎么查看软件安装的目录?方法1:whereis软件名以查询nginx为例子...

Linux下如何对目录中的文件进行统计

统计目录中的文件数量...

Linux常见文件目录管理命令

touch用于创建空白文件touch文件名称mkdir用于创建空白目录还可以通过参数-p创建递归的目录...

Linux常用查找文件方法总结

一、前言Linux系统提供了多种查找文件的命令,而且每种查找命令都具有其独特的优势,下面详细总结一下常用的几个Linux查找命令。二、which命令查找类型:二进制文件;...

取消回复欢迎 发表评论: