到不了理论值那么高吧,SPI-Nand顺序写估计能到2MB/s(四线),顺序读5MB/s差不多了。SPI-Nand随机写是120iops左右,随机读估计在600iops左右
Posts made by xiaowenge
-
Reply: SPI-NANDFLASH性能低问题
-
Reply: D1哪吒开发板默认输出改成HDMI
@nideyida 在 D1哪吒开发板默认输出改成HDMI 中说:
我先用在线文档介绍的方法切到HDMI输出:
cd /sys/kernel/debug/dispdbg echo disp0 > name; echo switch1 > command; echo 4 10 0 0 0x4 0x101 0 0 0 8 > param; echo 1 > start;
再cat colorbar,就不绿了,说明不是硬件或者显示器的问题,应该是我配置的问题
echo 1 > /sys/class/disp/disp/attr/colorbar
实测播放视频没绿。。。。就cat colorbar就绿,这就很尴尬了。。。
-
Reply: D1哪吒开发板默认输出改成HDMI
board.dts和uboot-board.dts你都这样改:
tina/device/config/chips/d1/configs/nezha$ git diff . diff --git a/configs/nezha/linux-5.4/board.dts b/configs/nezha/linux-5.4/board.dts index bfeed6c..335895e 100755 --- a/configs/nezha/linux-5.4/board.dts +++ b/configs/nezha/linux-5.4/board.dts @@ -1128,25 +1128,25 @@ chn_cfg_mode : Hardware DE channel allocation config. 0:single display with disp_init_enable = <1>; disp_mode = <0>; - screen0_output_type = <1>; - screen0_output_mode = <4>; - - screen1_output_type = <4>; - screen1_output_mode = <10>; - - screen1_output_format = <0>; - screen1_output_bits = <0>; - screen1_output_eotf = <4>; - screen1_output_cs = <257>; - screen1_output_dvi_hdmi = <2>; - screen1_output_range = <2>; - screen1_output_scan = <0>; - screen1_output_aspect_ratio = <8>; - - dev0_output_type = <1>; - dev0_output_mode = <4>; + screen0_output_type = <3>; + screen0_output_mode = <10>; + + screen0_output_format = <0>; + screen0_output_bits = <0>; + screen0_output_eotf = <4>; + screen0_output_cs = <257>; + screen0_output_dvi_hdmi = <2>; + screen0_output_range = <2>; + screen0_output_scan = <0>; + screen0_output_aspect_ratio = <8>; + + screen1_output_type = <1>; + screen1_output_mode = <4>; + + dev0_output_type = <4>; + dev0_output_mode = <10>; dev0_screen_id = <0>;
-
Reply: D1 DMIC+AMIC同时读取,系统出现kernel panic
哦哦,2路amic当回路是吧?
//使用arecord命令,在设备硬件设备snddmic上录一个采样率为16000、格式为S16_LE、6声道的音频文件,存到/tmp/test.wav
arecord -D hw:snddmic -r 16000 -f S16_LE -c 6 /tmp/test.wav
试下能不能录到音,确认一下硬件是不是坏的 -
D1-H/D1s SPI NAND & DDR支持列表
以下为D1 tina理论上支持的nand列表,用料量产前建议先找全志或代理商FAE确认压测情况。
Micron:MT29F1G01ABAFDSF-AAT(NW808)
MT29F2G01ABAGDWB
Winbond:W25N01GVZEIG
MXIC:MX35LF1GE4AB
MX35LF2GE4AD
GigaDevi ce:GD5F1GQ4UBYIGR
GD5F1GQ5UEYIGR
GD5F2GQ5UEYIGR
ESMT:F50L2G41XA
F50L1G41LB(2M) -> F50L1G41LB-104YG2M F50L1G41LB- 104YG2ME
Dosilicon:DS35Q1GA-1B
FORESEE:E FS35ND01G-S1F1QWFI
Zetta:ZD35Q1GA-IBR
FM:FM25S01更新DDR支持列表:
Hynix :H5TQ4G63EFR-RDC DDR3 FBGA 96 4Gb 256Mx16 792MHz
Micron: MT41K512M16HA-125 DDR3L FBGA 96 8Gb 512Mx16 792MHz
SpecTek: PRN512M16Z11CD8LY-083 DDR3 FBGA 96 8Gb 512Mx16 792MHz
(D1-H哪吒开发板上用的就是这几款,全志内部做过压力测试的) -
【系统更新】更新多媒体中间件,在Tina D1上支持gstreamer
基于D1_Tina_Open V1.0.1版本更新对gstreamer的支持:
1、Tina升级gstreamer主包及其各插件包到1.16.3版本,支持RV架构;
2、gstreamer显示插件sunxifbsink支持g2d硬件旋转;
3、更新多媒体中间件。
详见全志客户服务平台:全志客户服务平台
-
Reply: 请问哪吒 D1 开发板拔插 HDMI 显示器, 提示sink do not support this mode 是什么问题? 换了两台显示器了.
echo 4 10 0 0 0x4 0x101 0 0 0 8 > param;
这里第二个参数是分辨率,按照.dts注释里写的:
0screenx_output_mode (used for hdmi output, 0:480i 1:576i 2:480p 3:576p 4:720p50 5:720p60 6:1080i50 7:1080i60 8:1080p24 9:1080p50 10:1080p60 )
-
Reply: 请问哪吒 D1 开发板拔插 HDMI 显示器, 提示sink do not support this mode 是什么问题? 换了两台显示器了.
@tigger 默认应该是MIPI输出,切到HDMI输出就好了:
cd /sys/kernel/debug/dispdbg echo disp0 > name; echo switch1 > command; echo 4 10 0 0 0x4 0x101 0 0 0 8 > param; echo 1 > start;
-
Reply: 围观 D1s EVB
参考D1原理图,MIPI会用到DSI-CKN\DSI-CKP\DSI-DN0\DSI-DP0\DSI-DN1\DSI-DP1\DSI-DN2\DSI-DP2\DSI-DN3\DSI-DP3\DSI-RESET:
*DSI-CNX/DSI-CPX是数据组,屏幕分辨率低的数据量少,一组也行,比较多的是 两组 和四组,720p以上分辨率一般4组。这里我们比较豪,可以直接上4组,支持1080P都行这几组引脚在F133都有:
查阅F133 user manual,可以看到有支持最多8路DMIC:
看引脚,PF16-PD19都可以用来做DMIC的数据脚,PD20可以用来做时钟
F133的引脚相对D1会少很多,只有一组DMIC脚,没有那么多复用的,操作空间会小很多,用了之后引脚的其它功能就不能再用了。回路正好将一路声音从amic的地方来回做AEC就可以了。
综上,语音小电视方案在F133上可行。
-
Reply: 【DIY教程】用D1哪吒开发板做一个卡牌识别机,可以玩游戏王、狼人杀、三国杀、剧本杀
这个游戏王对战机会实现如下功能:
1.识别卡牌;
2.展示召唤效果——动画+光效+BGM;
3.修改攻击力/防御力
——这是线下对战中的一个痛点,因为在对战中经常有卡牌的效果影响怪兽的怪兽攻击力/防御力,比如场上有一只A怪兽的时候,B怪兽的攻击力会增加300点等以上功能需要两个显示屏幕实现,正好D1支持双屏异显,即同时接两个屏幕,分别输出不一样的内容,并且可以支持触控,这样看,我们的功能就都能在一块D1开发板上实现。
我们需要的硬件配置有:
D1哪吒开发板,MIPI屏幕+HDMI屏幕,USB摄像头,LED灯带做出来整个demo的硬件方案大概就是这样的:
-
Reply: 【DIY教程】用D1哪吒开发板做一个卡牌识别机,可以玩游戏王、狼人杀、三国杀、剧本杀
这个小demo的灵感,来源于前些天很火的一个司法拍卖:
80块钱游戏卡“青眼白龙”拍出8700万天价!原主人是95后贪污近7000万被判无期
这款纯金的“青眼白龙”卡牌限量发售500套,官方定价为1万多人民币。
虽然这个次拍卖是被人恶意哄抬价格,但是根据近期日本拍卖网站的成交价格来看,这张卡的实际市场估值已经去到了20-30万人民币左右。
对此我们只能说:
与此同时,我们看到了这样一个抖音视频:
通过全息风扇玩游戏王,增强线下游戏的氛围感
小时候看游戏王的动画片,里面的角色对战的时候可以直接召唤到怪兽,出场还自带动画和BGM,而我们自己玩的时候,则是一堆冷冰冰的卡牌,想想真是太无趣了
所以我们决定做一个【现实版插件】——游戏王对战机!
通过屏幕效果的展示和一些辅助功能,增强线下卡牌对战的氛围感和体验 -
Reply: R329编译错误
@tomwang 后面这份log没传成功。看之前那份编译环境啥的应该没啥问题,都编了大半了,可能时不断编出了新的库,虚拟机磁盘分配的空间不够了,所以编译异常,试着把虚拟器分配的空间调大试一下
-
Reply: R329编译错误
satisfy_dependencies_for: Cannot satisfy the following dependencies for bluez-alsa:
你重新开一个终端,配置一下环境变量,然后lunch的时候选择r329_evb5_min-tina编译试一下
-
Reply: R329按照官方文档下载无法编译
@tomwang
换了电脑还是一样的报错,那有两种可能:
1.你的账号权限有问题——概率极小,因为大家权限都是一样的,如果实在怀疑,可以重新注册一个账号试一下
2.配置环境&权限时你漏了一步没有做——大概率,但我不知道你的操作流程,分析不出时哪一步没做 -
在线文档更新:USB摄像头拍照Demo
在线文档更新:USB摄像头拍照Demo —— https://d1.docs.allwinnertech.com/study/study_7camerademo/#_9
插上就能用,手把手叫你给D1装上眼睛
-
D1在线文档更新:手把手教你编译第一个Hello Word
D1在线文档更新:手把手教你编译第一个Hello Word
链接:
https://d1.docs.allwinnertech.com/study/study_6helloword/ -
Reply: 以前以为XR829只是一个WIFI芯片,今天看了一下D1原理图,没想到是WIFI蓝牙二合一。
XR829还带ble。AW啥无线片子都有,什么带MCU的 wifi单模的 能跑鸿蒙的
-
Reply: R329按照官方文档下载无法编译
@tomwang 在 R329按照官方文档下载无法编译 中说:
@xiaowenge 编译机台用的是ubuntu14.04,环境完全按照官方文档搭建完成。
看错误log的话好像是repo manifest问题?看Log是的,但是看你截图上的ls内容,代码应该都下完了,或者可以先检查下各目录的内容,是不是里面的东西没下完?
-
Reply: R329的DSP开发如何申请?
@xacnma 在配置DSP环境时,需要获得Cadence 的license授权,这个好像不太好搞,需要直接和Cadence 签约,目前几个玩智能音箱的大客户和算法公司因为之前的项目有合作,基本都有签,可以直接玩起来,但是个人开发者估计不好搞,具可以和Cadence 沟通申请一下:https://www.synaptics.com/contact
-
Reply: 2021年D1哪吒开发板第一期成果汇报
微信公众号 嵌入式IoT 开箱评测系列:
全志D1开发板(哪吒 RISCV64)开箱评测
关于d1哪吒开发板的启动流程分析
用哪吒D1开发板体验riscv向量底层编程
哪吒D1开发板RISC-V CLINT编程实践原稿转自公众号:嵌入式IoT
原创:bigmagic -
Reply: 【资源汇总】D1-H芯片资料资源汇总
2021年第一期成果汇总
官宣文章:
1.【国产芯片之光!】全志科技发布首颗RISC-V应用处理器2.【免签NDA直接下】D1 Tina SDK v1.0正式释放!深入了解RISC-V的每一个DNA!
玩转开发板实例:
4.D1哪吒开发板开机连接wifi热点, 启动 sshd 服务
6.D1使用JTAG
10.哪吒开启 SSH 和 VNC 远程访问,再也不用鼠标和显示器了
13.全志D1裸奔工具XFEL
18.D1同时输出两个显示屏幕
20.将单独编译的opensbi u-boot kernel rootfs 烧录制作成可以启动的sdcard.img镜像
21.【Hacking Nezha Board】D1裸机程序开发
22.【Hacking Nezha Board】D1 Device Tree Oerlay
23.【Hacking Nezha Board】D1 boot适配
24.【深度讨论】目前D1芯片引导启动流程过长的问题,以及对RISC-V下引导程序环境的思考
25.自己动手编写一个非常简单的RISC-V C调用使用ABI规则ASM汇编的demo, 使用qemu-riscv64虚拟机测试.
26.D1精简版裸机程序
27.D1 哪吒开发板功耗数据
30.D1 尝试运行 Docker RISC-V 64位原生环境
31.D1芯片参考设计
32.如何让D1 uboot支持uImage镜像 + dtb启动系统
33.完整支持buildroot 2021 LTS构建D1开发板SD卡系统镜像
34.【极简操作】使用builroot 2021一键编译生成D1 nezha 系统镜像!
37.基于社区最新开源仓库(Opensbi、Linux)构建nezha - d1开发环境
38.哪吒D1/RVBoards RISCV Debian 64位 Docker 集成镜像
40.【实践操作】自己从头构建riscv 64 ubuntu等发行版系统!
42.使用Ubuntu20.04 LTS编译D1-Tina踩坑记录
官方威力加强包:
1.MIPI屏幕TFT08006支持3.ncnn支持
6.Fedora支持
活动&评测:
4.“创造 · 无限” 全志主题活动@2021 RISC-V中国峰会
5.开发者之声
-
Reply: 锦绣海湾城房屋租售
借楼出租海湾城一期联排中间位别墅,
194平方,
豪华欧式装修,
5000一个月,
3层5室2厅4卫3阳,
带停车位2个,
物业费426元/月。
联系人:文工 16763232956
-
【代码编不过请看这里】D1 Tina SDK完整编译log
有开发者提到Tina编译会出现问题,不知道怎么解决,这里我们将完整Tina SDK编译时候的log打包一份供大家参考。下载地址:https://www.aw-ol.com/downloads/resources/41
我的代码仓库曾经编译过代码,故我先将out目录删掉全部重新编译,这样的log会比较全:
xiaowenge@ubuntu:~/workspace/d_tina_d1_open_v1.0$ rm -rf out/ xiaowenge@ubuntu:~/workspace/d_tina_d1_open_v1.0$ source build/envsetup.sh Setup env done! Please run lunch next. xiaowenge@ubuntu:~/workspace/d_tina_d1_open_v1.0$ lunch You're building on Linux Lunch menu... pick a combo: 1. d1_nezha_min-tina 2. d1_nezha-tina Which would you like? [Default d1_nezha]: 2 ============================================ TINA_BUILD_TOP=/home/xiaowenge/workspace/d_tina_d1_open_v1.0 TINA_TARGET_ARCH=riscv TARGET_PRODUCT=d1_nezha TARGET_PLATFORM=d1 TARGET_BOARD=d1-nezha TARGET_PLAN=nezha TARGET_BUILD_VARIANT=tina TARGET_BUILD_TYPE=release TARGET_KERNEL_VERSION=5.4 TARGET_UBOOT=u-boot-2018 TARGET_CHIP=sun20iw1p1 ============================================ xiaowenge@ubuntu:~/workspace/d_tina_d1_open_v1.0$ make -j > compilelog.log [1] 57825 Collecting target info: done+ mkdir -p /home/xiaowenge/workspace/d_tina_d1_open_v1.0/out/host + mkdir -p /home/xiaowenge/workspace/d_tina_d1_open_v1.0/out/d1-nezha/staging_dir/target + cd /home/xiaowenge/workspace/d_tina_d1_open_v1.0/out/host + mkdir -p bin lib include stamp + cd /home/xiaowenge/workspace/d_tina_d1_open_v1.0/out/d1-nezha/staging_dir/target + mkdir -p bin lib include stamp This is not dpkg install-info anymore, but GNU install-info See the man page for ginstall-info for command line arguments src/sstrip.c: In function 'readelfheader32': src/sstrip.c:363:1: warning: format '%d' expects argument of type 'int', but argument 5 has type 'long unsigned int' [-Wformat=] HEADER_FUNCTIONS(32) ^ src/sstrip.c:363:1: warning: format '%d' expects argument of type 'int', but argument 5 has type 'long unsigned int' [-Wformat=] src/sstrip.c:363:1: warning: format '%d' expects argument of type 'int', but argument 5 has type 'long unsigned int' [-Wformat=] src/sstrip.c:363:1: warning: format '%d' expects argument of type 'int', but argument 5 has type 'long unsigned int' [-Wformat=] ………………
完整log见上面的下载链接
编译成功后打包log:
xiaowenge@ubuntu:~/workspace/d_tina_d1_open_v1.0$ pack --==========-- PACK_CHIP sun20iw1p1 PACK_PLATFORM tina PACK_BOARD d1-nezha PACK_KERN PACK_DEBUG uart0 PACK_SIG none PACK_SECURE none PACK_MODE normal PACK_FUNC android PACK_PROGRAMMER none PACK_TAR_IMAGE none PACK_TOPDIR /home/kunyao/workspace/d_tina_d1_open_v1.0 --==========-- No kernel param, parse it from d1 copying tools file copying configs file storage_type value is 5 rm /home/xiaowenge/workspace/d_tina_d1_open_v1.0/out/d1-nezha/image/sys_partition_nor.fex rm /home/xiaowenge/workspace/d_tina_d1_open_v1.0/out/d1-nezha/image/image_nor.cfg copying boot resource LZMA 4.65 : Igor Pavlov : Public domain : 2009-02-03 copying boot file make user resource for : /home/xiaowenge/workspace/d_tina_d1_open_v1.0/out/d1-nezha/image/sys_partition.fex handle partition user-res no user resource partitions APP_PART_DOWNLOAD_FILE = /home/xiaowenge/workspace/d_tina_d1_open_v1.0/out/d1-nezha/image/app.fex Need size of filesystem no data resource partitions don't build dtbo ... update_chip pack boot package GetPrivateProfileSection read to end content_count=3 LICHEE_REDUNDANT_ENV_SIZE config in BoardConfig.mk --mkenvimage create redundant env data!-- ---redundant env data size 0x20000--- packing for tina linux normal this is not a partition key gpt_head->header_crc32 = 0x5277aea2 GPT----part num 8--- gpt_entry: 128 gpt_header: 92 GPT:boot-resource: 1f8 2177 GPT:env : 2178 236f GPT:env-redund : 2370 2567 GPT:boot : 2568 761f GPT:rootfs : 7620 11597 GPT:dsp0 : 11598 11987 GPT:recovery : 11988 187c7 GPT:UDISK : 187c8 187d7 update gpt file ok update mbr file ok ==================================== show "sys_partition_for_dragon.fex" message ------------------------------------ [mbr] mbr_size : 252 Kbyte ------------------------------------ partition_name : boot-resource partition_size : 8064 downloadfile : boot-resource.fex boot-resource.fex size : 3.0M byte ------------------------------------ partition_name : env partition_size : 504 downloadfile : env.fex env.fex size : 128K byte ------------------------------------ partition_name : env-redund partition_size : 504 downloadfile : env.fex env.fex size : 128K byte ------------------------------------ partition_name : boot partition_size : 20664 downloadfile : boot.fex boot.fex -> /home/xiaowenge/workspace/d_tina_d1_open_v1.0/out/d1-nezha/boot.img boot.img size : 9.1M byte ------------------------------------ partition_name : rootfs partition_size : 40824 downloadfile : rootfs.fex rootfs.fex -> /home/xiaowenge/workspace/d_tina_d1_open_v1.0/out/d1-nezha/rootfs.img rootfs.img size : 16M byte ------------------------------------ partition_name : dsp0 partition_size : 1008 downloadfile : dsp0.fex dsp0.fex size : 258K byte ------------------------------------ partition_name : recovery partition_size : 28224 ------------------------------------ /home/xiaowenge/workspace/d_tina_d1_open_v1.0/out/host/bin/ /home/xiaowenge/workspace/d_tina_d1_open_v1.0/out/d1-nezha/image Begin Parse sys_partion.fex Add partion boot-resource.fex BOOT-RESOURCE_FEX Add partion very boot-resource.fex BOOT-RESOURCE_FEX FilePath: boot-resource.fex FileLength=2f8c00Add partion env.fex ENV_FEX000000000 Add partion very env.fex ENV_FEX000000000 FilePath: env.fex FileLength=20000Add partion env.fex ENV_FEX000000000 Add partion very env.fex ENV_FEX000000000 FilePath: env.fex FileLength=20000Add partion boot.fex BOOT_FEX00000000 Add partion very boot.fex BOOT_FEX00000000 FilePath: boot.fex FileLength=912000Add partion rootfs.fex ROOTFS_FEX000000 Add partion very rootfs.fex ROOTFS_FEX000000 FilePath: rootfs.fex FileLength=fa0000Add partion dsp0.fex DSP0_FEX00000000 Add partion very dsp0.fex DSP0_FEX00000000 FilePath: dsp0.fex FileLength=4059csys_config.fex Len: 0x4ebe config.fex Len: 0x6c00 board.fex Len: 0x400 split_xxxx.fex Len: 0x200 sys_partition.fex Len: 0xbe3 sunxi.fex Len: 0xd400 boot0_nand.fex Len: 0x10000 boot0_sdcard.fex Len: 0x10000 u-boot.fex Len: 0xdc000 u-boot-crash.fex Len: 0x25 toc1.fex Len: 0x8 toc0.fex Len: 0x8 fes1.fex Len: 0xa560 boot_package.fex Len: 0xfc000 usbtool.fex Len: 0x24e00 usbtool_crash.fex Len: 0x1ec00 aultools.fex Len: 0x28a73 aultls32.fex Len: 0x25205 cardtool.fex Len: 0x11e00 cardscript.fex Len: 0x6de sunxi_gpt.fex Len: 0x2000 sunxi_mbr.fex Len: 0x10000 dlinfo.fex Len: 0x4000 arisc.fex Len: 0xf vmlinux.fex Len: 0x8 tinaconf.fex Len: 0xcd00 boot-resource.fex Len: 0x2f8c00 Vboot-resource.fex Len: 0x4 env.fex Len: 0x20000 Venv.fex Len: 0x4 env.fex Len: 0x20000 Venv.fex Len: 0x4 boot.fex Len: 0x912000 Vboot.fex Len: 0x4 rootfs.fex Len: 0xfa0000 Vrootfs.fex Len: 0x4 dsp0.fex Len: 0x4059c Vdsp0.fex Len: 0x4 BuildImg 0 Dragon execute image.cfg SUCCESS ! ----------image is for nand/emmc---------- ----------image is at---------- /home/xiaowenge/workspace/d_tina_d1_open_v1.0/out/d1-nezha/tina_d1-nezha_uart0.img pack finish
我的代码版本是v1.0.1的:
xiaowenge@ubuntu:~/workspace/d_tina_d1_open_v1.0/lichee/linux-5.4$ git log . commit 035e3450a899008ef15bb387d0ed41aafd733a8a (HEAD -> product-smartx-d1-tina-v1.0-release, tag: smartx-d1-tina-v1.0.1-release, tina/product-smartx-d1-tina-v1.0-release, m/master) Author: liwencong <liwencong@allwinnertech.com> Date: Fri May 21 14:01:26 2021 +0800 smartx-d1-tina-v1.0.1-release release commit 9e841db240d4f7161ac1c931bd889dc17eb9b076 (tag: smartx-d1-tina-v1.0.0-release) Author: liwencong <liwencong@allwinnertech.com> Date: Fri Apr 30 19:24:15 2021 +0800 smartx-d1-tina-v1.0.0-release release
-
Reply: 【极简操作】使用builroot 2021一键编译生成D1 nezha 系统镜像!
参考:全志的longan系统下buildroot包含的包:
-
Reply: 【极简操作】使用builroot 2021一键编译生成D1 nezha 系统镜像!
@aldfaaa 有清华的同学在搞了 不知道是不是你说的那波
-
Reply: 【极简操作】使用builroot 2021一键编译生成D1 nezha 系统镜像!
@aldfaaa 有人移了系统,有人做了docker,有人写了文档,感觉没我们全志什么事了
-
Reply: 关于D1tina中软件包的想法
@bedrock 适配了,但又不一定适配了。。。有点是在其他全志芯片平台适配了比如r16 r328 r329啥的,但是D1不一定适配了
-
D1同时输出两个显示屏幕
HDMI和mipi-dsi接口同时输出一样的内容,即双屏同显,后面还会支持双屏异常显。
用的是哪吒开发板 + Tina v1.0 SDK -
cma扩充和开机logo消失问题分享
在使用的是128M dram的小内存配置,播放视频需要通过ion申请较多的连续物理内存空间,所以需要扩充CMA的大小,否则会导致cma扩充和开机logo消失。
【芯片平台】R311
【软件版本】tina3.5.1
【问题背景】
使用的是128MB的ddr,对于多视频播放和旋转的场景ion的使用非常吃紧,需要想办法扩大cma的大小。
【问题简述】
R311更改cma大小后,出现了不进kernel,开机logo消失等问题。
【问题处理过程】
(1)不进kernel:
更改cma大小为72MB后,系统无法进kernel,撤回修改,查看系统保留内存的分布:root@TinaLinux:/# cat /sys/kernel/debug/memblock/reserved 0: 0x40004000..0x40007fff, size:16K 1: 0x40020000..0x40020fff, size:4K 2: 0x40100000..0x40b480cb, size:10528K 3: 0x41000000..0x4100000b, size:0K 4: 0x43500000..0x4351617f, size:88K 5: 0x43c00000..0x47bfffff, size:65536K 6: 0x47cc8000..0x47f65fff, size:2680K 7: 0x47f7da00..0x47f961ff, size:98K 8: 0x47f9621c..0x47ffefff, size:419K 9: 0x47fff640..0x47fff67b, size:0K 10: 0x47fff680..0x47fff6bb, size:0K 11: 0x47fff6c0..0x47fff737, size:0K 12: 0x47fff740..0x47fff74f, size:0K 13: 0x47fff780..0x47fff78f, size:0K 14: 0x47fff7c0..0x47fff7c3, size:0K 15: 0x47fff800..0x47fff9ad, size:0K 16: 0x47fff9c0..0x47fffb6d, size:0K 17: 0x47fffb80..0x47fffd2d, size:0K 18: 0x47fffd40..0x47fffd43, size:0K 19: 0x47fffd64..0x47fffd81, size:0K 20: 0x47fffd84..0x47fffdb8, size:0K 21: 0x47fffdbc..0x47fffe1c, size:0K 22: 0x47fffe20..0x47fffe70, size:0K 23: 0x47fffe74..0x47ffff06, size:0K 24: 0x47ffff08..0x47ffff22, size:0K 25: 0x47ffff24..0x47ffff3e, size:0K 26: 0x47ffff40..0x47ffff5f, size:0K 27: 0x47ffff64..0x47ffff7e, size:0K 28: 0x47ffff80..0x47ffff8f, size:0K 29: 0x47ffff94..0x47ffffae, size:0K 30: 0x47ffffb0..0x47ffffff, size:0K
发现dts起始地址为0x43500000,cma的下一个保留区域起始地址为0x47cc8000,留给dts和cma的空间只有0x47cc8000-0x43500000约为71MB,cma大小设置为72MB后,超出了范围,导致不进kernel。怎么解决问题?把dts的起始地址往前挪动一下,cma的空间就可以得到扩充,如下所示,把dts的位置向前挪动0x00500000,cma足够容纳72MB的cma保留区域:
include/configs/sunxi-base.h: -#define CONFIG_SUNXI_FDT_ADDR SDRAM_OFFSET(0x03500000) +#define CONFIG_SUNXI_FDT_ADDR SDRAM_OFFSET(0x03000000)
修改后的保留内存的分布如下:
root@TinaLinux:/# cat /sys/kernel/debug/memblock/reserved 0: 0x40004000..0x40007fff, size:16K 1: 0x40020000..0x40020fff, size:4K 2: 0x40100000..0x40b480cb, size:10528K 3: 0x41000000..0x4100000b, size:0K 4: 0x43000000..0x4301617f, size:88K 5: 0x433fffff..0x47bfffff, size:73728K 6: 0x47cc8000..0x47f65fff, size:2680K 7: 0x47f7da00..0x47f961ff, size:98K 8: 0x47f9621c..0x47ffefff, size:419K 9: 0x47fff640..0x47fff67b, size:0K 10: 0x47fff680..0x47fff6bb, size:0K 11: 0x47fff6c0..0x47fff737, size:0K 12: 0x47fff740..0x47fff74f, size:0K 13: 0x47fff780..0x47fff78f, size:0K 14: 0x47fff7c0..0x47fff7c3, size:0K 15: 0x47fff800..0x47fff9ad, size:0K 16: 0x47fff9c0..0x47fffb6d, size:0K 17: 0x47fffb80..0x47fffd2d, size:0K 18: 0x47fffd40..0x47fffd43, size:0K 19: 0x47fffd64..0x47fffd81, size:0K 20: 0x47fffd84..0x47fffdb8, size:0K 21: 0x47fffdbc..0x47fffe1c, size:0K 22: 0x47fffe20..0x47fffe70, size:0K 23: 0x47fffe74..0x47ffff06, size:0K 24: 0x47ffff08..0x47ffff22, size:0K 25: 0x47ffff24..0x47ffff3e, size:0K 26: 0x47ffff40..0x47ffff5f, size:0K 27: 0x47ffff64..0x47ffff7e, size:0K 28: 0x47ffff80..0x47ffff8f, size:0K 29: 0x47ffff94..0x47ffffae, size:0K 30: 0x47ffffb0..0x47ffffff, size:0K
(2)开机logo消失:
开机logo是从uboot解码并显示的,找到logo解码的地方:compress_buf = get_decode_buffer(); if (compress_buf == NULL) { printf("bmp compress_buf empty,quit\n"); set_bmp_decode_flag(BMP_DECODE_FAIL); goto __third_cpu_end; } buf = (unsigned char *)(SUNXI_DISPLAY_FRAME_BUFFER_ADDR + SUNXI_DISPLAY_FRAME_BUFFER_SIZE); ret = sunxi_bmp_decode_from_compress(buf, compress_buf);
发现需要从地址compress_buf把logo的bmp格式数据解压到buf地址,buf地址为SUNXI_DISPLAY_FRAME_BUFFER_ADDR + SUNXI_DISPLAY_FRAME_BUFFER_SIZE,也就是0x47400000。compress_buf的地址如下所示:
if (next_mode == SUNXI_STATE_NORMAL_BOOT) { set_decode_buffer((unsigned char *) (SUNXI_LOGO_COMPRESSED_LOGO_BUFF)); } else if (next_mode == SUNXI_STATE_SHUTDOWN_CHARGE) {
从这里的代码片段知道,logo的原始数据放在地址SUNXI_LOGO_COMPRESSED_LOGO_BUFF,也就是0x43000010,而现在dts的区域的保留区域是( 0x43000000..0x4301617f),刚好覆盖到了SUNXI_LOGO_COMPRESSED_LOGO_BUFF。将SUNXI_LOGO_COMPRESSED_LOGO_BUFF改为0x42000000,这样就能使logo数据不落在内存的保留区域内。 然而编译后再验证,发现logo还是没法显示,从目前得到的信息看不到问题点,说明问题的原因还是没有全部被找到,继续跟进解码数据的过程:
int lzmaBuffToBuffDecompress (unsigned char *outStream, SizeT *uncompressedSize, unsigned char *inStream, SizeT length) { ....... /* Read the uncompressed size */ for (i = 0; i < 8; i++) { unsigned char b = inStream[LZMA_SIZE_OFFSET + i]; if (i < 4) { outSize += (UInt32)(b) << (i * 8); } else { outSizeHigh += (UInt32)(b) << ((i - 4) * 8); } } outSizeFull = (SizeT)outSize; if (sizeof(SizeT) >= 8) { /* * SizeT is a 64 bit uint => We can manage files larger than 4GB! * */ outSizeFull |= (((SizeT)outSizeHigh << 16) << 16); } else if (outSizeHigh != 0 || (UInt32)(SizeT)outSize != outSize) { /* * SizeT is a 32 bit uint => We cannot manage files larger than * 4GB! Assume however that all 0xf values is "unknown size" and * not actually a file of 2^64 bits. * */ if (outSizeHigh != (SizeT)-1 || outSize != (SizeT)-1) { debug ("LZMA: 64bit support not enabled.\n"); return SZ_ERROR_DATA; } } ....... }
如上面代码片段所示,检查*inStream(内存中的bmp数据)前面8位信息的时候,函数报错返回了,这里说明了内存中的bmp数据有问题。bmp数据需要先从flash里面拷贝到内存SUNXI_LOGO_COMPRESSED_LOGO_BUFF中,后面才能从SUNXI_LOGO_COMPRESSED_LOGO_BUFF解码出来 。现数据有异常,需要检查bmp数据从flash拷贝到内存的过程。查找SUNXI_LOGO_COMPRESSED_LOGO_BUFF使用的地方,arch/arm/cpu/armv7/sun8iw15p1/spl/fip_common.c里面有类似从flash拷贝logo数据到内存的代码:
arch/arm/cpu/armv7/sun8iw15p1/spl/fip_common.c: int load_fip(int *use_monitor) { ...... } else if (strncmp(toc1_item->name, ITEM_LOGO_NAME, sizeof(ITEM_LOGO_NAME)) == 0) { *(uint *)(SUNXI_LOGO_COMPRESSED_LOGO_SIZE_ADDR) = toc1_item->data_len; toc1_flash_read(toc1_item->data_offset/512, (toc1_item->data_len+511)/512, (void *)SUNXI_LOGO_COMPRESSED_LOGO_BUFF); } else if (strncmp(toc1_item->name, ITEM_SHUTDOWNCHARGE_LOGO_NAME, sizeof(ITEM_SHUTDOWNCHARGE_LOGO_NAME)) == 0) { ...... }
从这段代码中看不出来有问题,再看看发现编译uboot的时候跟本不会编译到这个文件,怎么回事,询问负责uboot模块的同事得知,这里的文件是给boot0用的,logo数据从flash拷贝到内存的动作也是在boot0的时候做的。所以更新了SUNXI_LOGO_COMPRESSED_LOGO_BUFF的地址,还需要同时编译boot0,这样对于logo数据的拷贝和解码来说,SUNXI_LOGO_COMPRESSED_LOGO_BUFF才是相同的地址。
(文 by. shaokang)
-
Reply: 关于D1开发板SD卡启动 系统镜像分区问题?
可以试下用我们的制卡工具:
下载地址:
https://www.aw-ol.com/downloads?cat=5 -
Reply: D1 SDK V1.01 固件在编译的过程中遇到的问题
-
编个min固件试试环境是不是配好的;
-
make -j1试试是不是有的依赖没写好;
-
编不过又不知道干嘛用的包,直接make kernel_menuconfig/menuconfig反选掉试试;(世上无难事 只要肯放弃)
-
-
Reply: D1怎么使用JTAG?
tina固件是支持单独烧写分区的,如果没有特别的调试需求用不上jtag
如果真要用,需要卖平头哥专门的调试器,并且关掉sdc0 -
Reply: D1设置hdmi分辨率
@dianjixz
(1)开机屏幕有亮吗?有的话是背光亮
一下还是显示了linux的小企鹅?
(2)用的是哪个版本的软件和硬件? -
全志在线开发者社区须知
1.QQ群只回复引导性问题,如XXX文档在哪里、SDK在哪里可以下载到、XX芯片是几个核等,对于超过10秒钟的才能解决的技术问题,让开发者直接到论坛提问,这样做是为了:
(1)方便对应工程师知道问题,解决问题;
(2)所有问题的发生都不是偶然,后面一定还会有开发者遇到,留个解决记录,下次还有开发者遇到就可以直接发个链接,以及方便开发者搜索问题;2.QQ群只引导大家吹牛逼,传播资讯,对应宣扬负面情绪的言论,不予回复,过一会让它被其他言论淹没掉;
3.QQ群一旦有人传播色情、反动、违反国家安全或公共安全的言论,马上踢出群,并举报,情节严重者提交网警处理;
4.论坛尽量引导大家争取提问,需要说清楚:
(1)做了什么操作导致的异常;
(2)软件和硬件分别是什么版本;
(3)异常log;
(4)复现概率和如何复现问题等;5.开发板和样片直接到淘宝店购买,不私下收钱;
6.芯片大规模出货直接将项目移交代理商或者商务,代理商联系方式在官网对应的芯片下面有;
7.明确全志在线与全志科技的关系,全志在线是全志科技全资子公司,主要负责在线社区和开发板的推广工作,只有部分芯片的样片代理销售券,不涉及规模化的芯片业务。
-
做了个3.5mm接口speak小板子,大家有需要吗?
如图,3.5mm耳机接口出来直接接一个小板子,小板子上有两个功放,可以分左右声道出声音,接了两个小喇叭,40pin上面的3条线是给电的,已加入硬件威力加强包! -
Reply: D1,执行tplayerdemo /usr/lib/tt-data/01-1080P-HEVC-AAC-60F.mkv 这条命令报错,最新卖的板子附带的系统,
@xushengrui 看着没报错,显示应该是从mipi-dsi屏幕输出的,但是你每月接屏幕