You are on page 1of 4

Concerto flax linux 平台开发指南

一、嵌入式 linux 开发介绍


a) 嵌入式开发环境
嵌入式单板开发,通常采用交叉编译调试的方式进行,即“宿主机+目标机(评

板)”的形式。宿主机和目标机一般通过串口连接。
宿主机和目标机的处理器一般不相同。宿主机需要建立适合于目标机的交叉编译

境。程序在宿主机上经过“编译-连接-定位”得到可执行文件。把可执行文件烧
写到目标机中,在目标机上运行。
目标机上的 Bootloader 启动后,目标机中的操作信息通过串口或者网口输出到宿
主机上显示。在宿主机上的控制台中输入命令,可以控制目标机。
b) Linux 开发环境
Linux 开发环境通常包括 Linux 服务器、Windows 工作台和目标板。
在 Linux 服务器上建立交叉编译环境,Windows 工作台通过串口或 JTAG 与目标
板 连 接 ( JTAG 应 用 于 ADS/RealView Debugger 等 软 件 ) , 开 发 人 员 可 以 在
Windows 工作台中进行程序开发或者远程登录到 Linux 服务器进行程序开发。

二、搭建 montage linux 开发环境


a) 安装交叉工具链(目前 192.168.52.9 等 linux 服务器已经 ready)
目 前 concerto 使 用 的 交 叉 编 译 工 具 链 为 : mips-4.3-154-mips-linux-gnu-i686-pc-
linux-gnu.tar.bz2 , 使 用 前 请 将 其 压 缩 至 linux 相 关 目 录 ( 如 /usr/local/
codesourcery/ ), 编 译 时 通 过 类 似 如 下 方 式 将 目 录 添 加 进 环 境 变 量 : export
PATH=$PATH:/usr/local/codesourcery/mips-4.3/bin , 后 续 使 用 时 添 加 上 CROSS =
mips-linux-gnu-来进行调用即可。
b) Flax sdk 安装及介绍
i. Flax sdk 下载编译等系列工作均需要在 linux 环境下进行,所以请大家通过
SecureCRT/xshell 等 Telnet 客户端链入 192.168.52.9 等 linux 服务器上建立自己
的开发目录。
ii. 解压缩 SDK 包(例如 tar -xzvf MS88CC6000_v1.0.0_hg1662.tar.gz)
iii. Flax 仓库分成两块 platform 和 kware
1. Platform 作 为 基 础 的 平 台 代 码 , 其 内 部 包 括
boot、kernel、driver(ko 库)、mtapi(lib 库)等完整的功能
代码,能满足一般的项目开发需求。
2. Kware 是基于 mtapi 接口层开发的一套功能代码,其主要包括一
套文件浏览器(磁盘管理库、多媒体播放、mp3 音乐播放、图片浏
览、txt 文件浏览)。
3. 详细的目录结构参考下图
|--platform
|--doc Sdk 文档,包括 API 手册及基本用户手册
|--os_linux 内核、boot、
、loader、根文件系统
|--linux2.6.29.4 2.6 内核
|--rootfs 根文件系统
|--uboot Uboot 源码
|--public 发布给客户使用的头文件、库和 image
|--image 编译出来的 boot-init、uboot、linux、loader 等映象
|--include 提供给客户的 mtapi 头文件
|--lib 提供给客户的 mtapi 库文件
|--kware 提供给客户的 kware 库文件和头文件
|--ko 提供给客户的可插入驱动 ko 文件
|--usrfs 应用文件系统目录(挂载在/usr/local/stb)
|--start.sh 应用的启动脚本
|--sample 测试范例代码
|--tools 系统编译时所依赖的一些工具及脚本文件
|--Makefile 底层的 makefile,可通过 make help 来查看编译选项
|--setenv 系统环境变量,make 之前需通过 source setenv 设置

c) Sdk 编译指南
i. Platform 和 kware 编译之前均需要通过 source setenv 进行环境变量设置。
ii. Platform 的编译通过 make help 来获取各个模块的编译方式
@echo source setenv:-------------set environment
@echo make kernel:---------------build linux kernel
@echo make kernel_clean:-------clean linux kernel
@echo make mtapi:----------------build montage api layer
@echo make mtapi_clean:--------clean montage api layer
@echo make sample:---------------build sample application
@echo make sample_clean:-------clean sample application
@echo make fs:----------------------build file system
@echo make help:--------------------get help
iii. 编译完成后均会自动拷贝输出文件至 public 的相应目录。kernel 不会做此自动
拷贝工作,需要自行从具体目录下拿取。

三、如何编译生成第三方库文件
参考 montage-tech\platform\doc\make-lib
四、如何编译生成可执行文件
参考 montage-tech\platform\doc\make-exe
五、montage linux app 系统运行
a) 应用程序介绍
i. Btinit,负责内存及系统初始化,并加载 uboot
ii. Uboot,负责引导内核、loader,支持开机画面
iii. av_cpu,音视频解码程序,运行于从核,主核运行应用程序
iv. Logo,开机画面(I 帧)
v. Rw,uboot、应用程序、loader 三者彼此交互的数据区
vi. Loader,升级程序
vii. Kernel,linux 内核程序,附带根文件系统
viii. Usrfs,应用程序文件系统,挂载于/usr/local/stb 目录,squashfs 文件系统
ix. Data,应用程序数据分区
b) Spi flash 运行环境
i. 系统的分区表可在 uboot 启动时查看系统打印,目前默认提供的分区如下:
btinit.img 0 00000000 00010000
uboot.img 1 00010000 00080000
av_cpu.img 2 00090000 00040000
logo.img 3 000d0000 00020000
rw.img 4 000f0000 00010000
rw.img 5 00100000 00010000
loader.img 6 00110000 00040000
kernel.img 7 00150000 00320000
usrfs.img 8 00470000 00370000
data.img 9 007e0000 00020000
ii. 如需要修改分区,可查看 uboot 代码中 concerto_flash.c 文件
iii. Uboot 下支持 tftp 和 U 盘读写命令
1. Tftp 命令:tftp 80100000 uImage
2. U 盘读命令:
a) 初始化命令 usb start
b) 查看文件列表 fatls usb 0
c) 读文件 fatload usb 0 80100000 uImage
iv. Uboot 下 flash 烧写命令
1. Flash 初始化:sf probe
2. Flash 读:sf read 80100000 0 10000 ---- 80100000 为内存地址,0 为 flash
偏移地址,10000 为读取大小,读取大小需 64 直接对齐
3. Flash 写:sf burn 80100000 0 10000
4. Flash 擦:sf erase 0 10000

c) Nand flash 运行环境


d) 空片烧写 btinit 和 uboot 方法
i. 使用 tools\windows 目录下的 SCOM_English(V4.2.0.0).exe
ii. 选择指定串口,并将波特率设为 38400
iii. 勾选右上方的 BootRom,并根据实际的 DDR 类型选择 btinit
1. DDR2 选择 btinit_ddr2_debug.img
2. DDR3 选择 btinit_ddr3_debug.img
iv. 重新上电,等串口上出现 R 字符时,send file 按钮,等待发送完成
v. 发送完成后会出现系列串口打印,此时将串口切换至 115200,选择 uboot 程

vi. 选择好 uboot 后,在点 send file 按钮,等待发送完成即可
vii. 发 送 完 成 后 uboot 会 自 启 动 , 按 任 意 键 进 入 uboot 命 令 行 , 重 新 烧 写
btinit 、uboot 及其他 image 即可
e) Nfs 运行环境(针对 spi flash)
i. 按照上述烧写步骤烧写好 btinit、uboot、av_cpu、logo、uImage
ii. Nfs 挂载及运行
1. Nfs 挂载(/d/work/nfs 是 windows 的 nfs 服务器目录,具体查看 haneWIN
的 exports 目录)
a) ifconfig eth0 192.168.1.5 netmask 255.255.255.0 up
b) mount -t nfs -o rw,nolock 192.168.1.1:/d/work/nfs /mnt
c) cd /mnt
2. 驱动 ko 挂载(需提前将 platform/publib/ko 下的所有文件拷贝至 nfs 目
录)
a) ./insmod.sh
3. App 运行(需提前将 concerto.bin 拷贝至 nfs 目录)
a) ./concerto.bin

六、linux app 系统调试


a) 使用 code dump 调试应用程序
i. 编译程序时加-g 选项,目前 flax 默认编译选项已经加入-g
ii. 编译出来应用程序请勿用 strip 去除调试信息
iii. 将 start..sh 中
#ulimit -c unlimited
#echo "/media/sda1/core">/proc/sys/kernel/core_pattern
修改为
ulimit -c unlimited
echo "/media/sda1/core">/proc/sys/kernel/core_pattern
iv. 上述步骤后系统会将调试信息输出到 U 盘根目录上,会生产 core 文件
v. 插入 U 盘,按照正常情况运行应用程序
vi. 到系统程序异常退出后,会在 U 盘根目录生成 core,将 core 文件移至 PC
vii. 使用 mips-linux-gnu-gdb concerto.bin core 来打开 core dump 信息,concerto.bin
为应用程序名
viii. 使用 bt full 来查看异常退出点

You might also like