3299
- 收藏
- 点赞
- 分享
- 举报
【T30上手笔记1】开发环境搭建
本帖最后由 9crk 于 2018-10-10 11:42 编辑
1.君正淘宝店1700大洋购买板子一套
2.T30有NLXA好几款不同配置的尾缀,由于都是Pin2Pin兼容,我们暂定X做开发,后期按需求costdown,但最低配是没有simd的,也就无法使用其算法库。
3.硬件:在没有uboot时,只支持TF卡启动,没有串口或USB loader,开发板没有内置程序,第一次必须自己去找个TF卡刷机。
4.SDK:
.
├── ChangeLog_1.0.2.md
├── doc
│ ├── html_cn
│ └── html_en
├── include
│ ├── imp
│ └── sysutils
├── lib
│ ├── glibc
│ └── uclibc
├── opensource
│ ├── busybox
│ ├── busybox.7z
│ ├── drivers.7z
│ ├── kernel
│ ├── kernel.7z
│ ├── uboot
│ └── uboot.7z
├── res
│ ├── sensor_settings_t30
│ ├── tools_t30
│ └── wifi
├── samples
│ ├── libimp-samples
│ └── libsysutils-samples
└── Versions
安装toolchain
由于系统是Ubuntu 64BIT,因此采用mips-gcc472-glibc216-64bit-r2.3.3.7z
解压 7z x mips-gcc472-glibc216-64bit-r2.3.3.7z
设置.bashrc即可
解压源码
kernel uboot busybox
编译uboot
[code]SFC启动u-boot:
make isvp_t30_sfcnor_ddr128M
或 make isvp_t30_sfcnor_ddr128M_config;make
MSC1(TF卡)启动u-boot:
make isvp_t30_msc0_ddr128M
或 make isvp_t30_msc0_ddr128M_config;make
T30:
isvp_t30_sfcnor_lite --用于T30L
isvp_t30_sfcnor --用于T30N
isvp_t30_sfcnor_ddr128M --用于T30X(1Gbit DDR版本)
isvp_t30_msc0 --用于卡启动
isvp_t30_msc0_ddr128M --用于卡启动,用于T30X(1Gbit DDR版本),如果只是用于卡烧录的话可以使用512Mbit的配置
[/code]
编译kernel
[code]make isvp_monkey_defconfig
make uImage[/code]
编译驱动ko
[code]cd opensource/drivers/misc/sensor_info
make
每当kernel更改之后,可能会出现ko无法insmod的情况,或者可以insmod但会出现未知错误。这是因为kernel重新编译后,函数Symbol表有变化,需要重新编译ko driver以正确link函数。此时需要重新编译ko。
[/code]
编译busybox(没有用,可省略)
[code]make isvp_uclibc_defconfig
make
make install[/code]
[quote]注意:编译器支持uclibc和glibc,但SDK内注明一般应用都推荐uclibc
关于glibc和uclibc编译的区分方法请参考《Toolchain使用说明》
关于API库的链接顺序:[IVS库] [mxu库] [libimp/libsysutils] [libalog]
由于libimp中依赖C++库,因此需要使用mips-linux-gnu-g++进行链接,若使用gcc链接,需要手动添加LD_FLAGS+=stdc++
如何优化elf文件的大小:
编译等级选择O2:C_FLAGS/CXX_FLAGS += -O2
LDFLAG += -Wl,-gc-sections,不链接不必要的段
对elf文件执行mips-linux-gnu-strip,链接后删除不必要的段
若系统中有多个elf文件需要链接库文件,可使用动态链接的方式,若只有一个文件链接库文件,请使用静态链接的方式(注,libimp相关功能在系统中只能存在一份实例)。在调试时选择动态链接的方式可以方便的进行debug及问题反馈
[/quote]
5.编译例程:
[code]cd Ingenic-SDK-T30-1.0.2-20180525/samples/libimp-samples
make
cd Ingenic-SDK-T30-1.0.2-20180525/samples/libsysutils-samples
make[/code]
6.制作TF卡启动
[code]umount /dev/sdb1 注意先umount
fdisk /dev/sdb
> o --创建一个新的分区表
> n --添加一个分区n
--此时会提示:
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
--这里回车默认是p,创建主分区
分区号 (1-4,默认为 1):
将使用默认值 1
--这里回车默认创建1号分区
起始 sector (2048-15130623,默认为 2048):
将使用默认值 2048
Last sector, +扇区 or +size{K,M,G} (2048-15130623,默认为 15130623):
将使用默认值 15130623
--2048号扇区在1MB的位置,给uboot空出了空间
最后一步,输入w,向SD卡中写入分区表
The partition table has been altered![/code]
然后烧录uboot到sdb(!!!!注意不是sdb1!!!!)
mkfs.vfat /dev/sdb1
dd if=/mnt/T30/Ingenic-SDK-T30-1.0.2-20180525/opensource/uboot/u-boot-with-spl.bin of=/dev/sdb bs=1024 seek=17
7.制作rootfs
分区计划:uboot+kernel+rootfs+system总共4个分区
建议的方式是rootfs使用squashfs-ro,system使用jffs2-rw
[code]cd ISVP-T30-1.0.2-20180525/common/software/resource/rootfs/uclibc
tar -jxf root-uclibc-1.1.tar.bz2
打包成squashfs
mksquashfs rootfs rootfs.squashfs -comp xz
打包成jffs2
mkfs.jffs2 -o rootfs.jffs2 -r rootfs[输入文件夹] -e 0x8000[擦除大小32K] -s 0x40000[页大小256K] -n -l -X zlib --pad=0x300000
注:擦除大小和页大小要与内核中Flash的设置保持一致,否则会出现错误。[/code]
8.启动系统,网口tftp烧录uboot+kernel+rootfs
插入TF卡,即可启动进入uboot
开发板不带网线,悲剧,暂时到这里。
但是里面是有kernel和rootfs的
[img=800,600]http://bbs.ebaina.com/data/attachment/forum/201808/21/202423cqq6j7bvq5bnjcpb.png[/img]
明天再更新吧。
找来了tb上的网线,但发现顺序不对,需要抠掉座子,这样接线
1.君正淘宝店1700大洋购买板子一套
2.T30有NLXA好几款不同配置的尾缀,由于都是Pin2Pin兼容,我们暂定X做开发,后期按需求costdown,但最低配是没有simd的,也就无法使用其算法库。
3.硬件:在没有uboot时,只支持TF卡启动,没有串口或USB loader,开发板没有内置程序,第一次必须自己去找个TF卡刷机。
4.SDK:
.
├── ChangeLog_1.0.2.md
├── doc
│ ├── html_cn
│ └── html_en
├── include
│ ├── imp
│ └── sysutils
├── lib
│ ├── glibc
│ └── uclibc
├── opensource
│ ├── busybox
│ ├── busybox.7z
│ ├── drivers.7z
│ ├── kernel
│ ├── kernel.7z
│ ├── uboot
│ └── uboot.7z
├── res
│ ├── sensor_settings_t30
│ ├── tools_t30
│ └── wifi
├── samples
│ ├── libimp-samples
│ └── libsysutils-samples
└── Versions
安装toolchain
由于系统是Ubuntu 64BIT,因此采用mips-gcc472-glibc216-64bit-r2.3.3.7z
解压 7z x mips-gcc472-glibc216-64bit-r2.3.3.7z
设置.bashrc即可
解压源码
kernel uboot busybox
编译uboot
[code]SFC启动u-boot:
make isvp_t30_sfcnor_ddr128M
或 make isvp_t30_sfcnor_ddr128M_config;make
MSC1(TF卡)启动u-boot:
make isvp_t30_msc0_ddr128M
或 make isvp_t30_msc0_ddr128M_config;make
T30:
isvp_t30_sfcnor_lite --用于T30L
isvp_t30_sfcnor --用于T30N
isvp_t30_sfcnor_ddr128M --用于T30X(1Gbit DDR版本)
isvp_t30_msc0 --用于卡启动
isvp_t30_msc0_ddr128M --用于卡启动,用于T30X(1Gbit DDR版本),如果只是用于卡烧录的话可以使用512Mbit的配置
[/code]
编译kernel
[code]make isvp_monkey_defconfig
make uImage[/code]
编译驱动ko
[code]cd opensource/drivers/misc/sensor_info
make
每当kernel更改之后,可能会出现ko无法insmod的情况,或者可以insmod但会出现未知错误。这是因为kernel重新编译后,函数Symbol表有变化,需要重新编译ko driver以正确link函数。此时需要重新编译ko。
[/code]
编译busybox(没有用,可省略)
[code]make isvp_uclibc_defconfig
make
make install[/code]
[quote]注意:编译器支持uclibc和glibc,但SDK内注明一般应用都推荐uclibc
关于glibc和uclibc编译的区分方法请参考《Toolchain使用说明》
关于API库的链接顺序:[IVS库] [mxu库] [libimp/libsysutils] [libalog]
由于libimp中依赖C++库,因此需要使用mips-linux-gnu-g++进行链接,若使用gcc链接,需要手动添加LD_FLAGS+=stdc++
如何优化elf文件的大小:
编译等级选择O2:C_FLAGS/CXX_FLAGS += -O2
LDFLAG += -Wl,-gc-sections,不链接不必要的段
对elf文件执行mips-linux-gnu-strip,链接后删除不必要的段
若系统中有多个elf文件需要链接库文件,可使用动态链接的方式,若只有一个文件链接库文件,请使用静态链接的方式(注,libimp相关功能在系统中只能存在一份实例)。在调试时选择动态链接的方式可以方便的进行debug及问题反馈
[/quote]
5.编译例程:
[code]cd Ingenic-SDK-T30-1.0.2-20180525/samples/libimp-samples
make
cd Ingenic-SDK-T30-1.0.2-20180525/samples/libsysutils-samples
make[/code]
6.制作TF卡启动
[code]umount /dev/sdb1 注意先umount
fdisk /dev/sdb
> o --创建一个新的分区表
> n --添加一个分区n
--此时会提示:
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
--这里回车默认是p,创建主分区
分区号 (1-4,默认为 1):
将使用默认值 1
--这里回车默认创建1号分区
起始 sector (2048-15130623,默认为 2048):
将使用默认值 2048
Last sector, +扇区 or +size{K,M,G} (2048-15130623,默认为 15130623):
将使用默认值 15130623
--2048号扇区在1MB的位置,给uboot空出了空间
最后一步,输入w,向SD卡中写入分区表
The partition table has been altered![/code]
然后烧录uboot到sdb(!!!!注意不是sdb1!!!!)
mkfs.vfat /dev/sdb1
dd if=/mnt/T30/Ingenic-SDK-T30-1.0.2-20180525/opensource/uboot/u-boot-with-spl.bin of=/dev/sdb bs=1024 seek=17
7.制作rootfs
分区计划:uboot+kernel+rootfs+system总共4个分区
建议的方式是rootfs使用squashfs-ro,system使用jffs2-rw
[code]cd ISVP-T30-1.0.2-20180525/common/software/resource/rootfs/uclibc
tar -jxf root-uclibc-1.1.tar.bz2
打包成squashfs
mksquashfs rootfs rootfs.squashfs -comp xz
打包成jffs2
mkfs.jffs2 -o rootfs.jffs2 -r rootfs[输入文件夹] -e 0x8000[擦除大小32K] -s 0x40000[页大小256K] -n -l -X zlib --pad=0x300000
注:擦除大小和页大小要与内核中Flash的设置保持一致,否则会出现错误。[/code]
8.启动系统,网口tftp烧录uboot+kernel+rootfs
插入TF卡,即可启动进入uboot
开发板不带网线,悲剧,暂时到这里。
但是里面是有kernel和rootfs的
[img=800,600]http://bbs.ebaina.com/data/attachment/forum/201808/21/202423cqq6j7bvq5bnjcpb.png[/img]
明天再更新吧。
找来了tb上的网线,但发现顺序不对,需要抠掉座子,这样接线
我来回答
回答0个
时间排序
认可量排序
暂无数据
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币
Markdown 语法
- 加粗**内容**
- 斜体*内容*
- 删除线~~内容~~
- 引用> 引用内容
- 代码`代码`
- 代码块```编程语言↵代码```
- 链接[链接标题](url)
- 无序列表- 内容
- 有序列表1. 内容
- 缩进内容
- 图片![alt](url)
相关问答
-
12019-09-11 22:40:59
-
2012-12-04 13:07:48
-
12021-01-04 10:32:01
-
2018-11-11 12:43:02
-
2018-11-16 13:07:10
-
2018-05-17 14:21:56
-
2020-11-10 14:29:21
-
2020-09-22 11:14:03
-
122018-11-11 13:02:53
-
2020-11-11 10:21:07
-
2020-11-10 19:45:56
-
2018-05-14 16:58:25
-
2019-01-19 12:39:46
-
2018-08-17 11:13:28
-
2016-08-16 10:12:17
-
2008-07-06 21:15:38
-
2018-09-04 14:58:51
-
2020-02-18 19:42:35
-
2018-11-15 21:59:39
无更多相似问答 去提问
点击登录
-- 积分
-- E币
提问
—
收益
—
被采纳
—
我要提问
切换马甲
上一页
下一页
悬赏问答
-
5Hi3516CV610 如何使用SD卡升级固件
-
5cat /dev/logmpp 报错 <3>[ vi] [func]:vi_send_frame_node [line]:99 [info]:vi pic queue is full!
-
50如何获取vpss chn的图像修改后发送至vo
-
5FPGA通过Bt1120传YUV422数据过来,vi接收不到数据——3516dv500
-
50SS928 运行PQtools 拼接 推到设备里有一半画面会异常
-
53536AV100的sample_vdec输出到CVBS显示
-
10海思板子mpp怎么在vi阶段改变视频数据尺寸
-
10HI3559AV100 多摄像头同步模式
-
9海思ss928单路摄像头vio中加入opencv处理并显示
-
10EB-RV1126-BC-191板子运行自己编码的程序
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
提醒
你的问题还没有最佳答案,是否结题,结题后将扣除20%的悬赏金
取消
确认
提醒
你的问题还没有最佳答案,是否结题,结题后将根据回答情况扣除相应悬赏金(1回答=1E币)
取消
确认