Android编译笔记二
对比了RK3288的Ubuntu14.04和按官网编译的Android的log信息后发现很多不一样,鉴于官网上的编译方法是针对开发板的,所以烧录后内核起不来,也要查看一下硬件,先查一下各路电压。
电源名称 | 电压理论值(V) | 实际电压值(V) | 状态 | ||
---|---|---|---|---|---|
VCC_DC | 5 | 5 | 适配器和FPC出来的5v电压 | ||
VCC_SYSIN | 3.7~4.2 | 3.9 | 电池电压,通过TPS61232转出VCC_SYS | ||
VCC_SYS | 5 | 4.98 | 8846的输入,也是该系统的主电压 | ||
VCC_DDR | 1.5 | 1.5 | |||
VCC_20 | 2 | 1.99 | 好像是8846第4路主输出给自己ldo的输入端 | ||
VCC_IO | 3.3 | 3.3 | EMMC RK3288部分电压,和WiFi蓝牙及一些电路的供电 | ||
VDD_LOG | 1.1 | 1.19 | RK3288内的LOGIC部分电压 | ||
VDDIO_SD | 3.3 | 3.3 | 给RK3288的Internal BootRom供电 | ||
VDD10_LCD | 1 | 1.04 | 给RK3288内的EDP和LVDS部分供电 | 烧录前OFF | |
VCCA_CODEC | 3.3 | 2.79 | 给音频ALC5640供电 | 烧录前OFF | 不一致 |
VCC_TP | 3.3 | 3.3 | 给TP小板供电 | 烧录前OFF | |
VCC18_LCD | 1.8 | 1.84 | 给RK3288内的EDP和LVDS部分供电 | 烧录前OFF | |
VDD_10 | 1 | 1.09 | 都是去RK3288用了三四处 | ||
VCC_18 | 1.8 | 1.79 | 用到了RK3288和转VCCIO_CODEC | ||
VCCIO_PMU | 3.3 | 3.28 | 去RK3288和8846自己,以及耳机电路 | ||
VCC33_RTC | 3.3 | 3.3 | 由VCC_SYS转出用来给晶振电源按键等 | ||
VCC_SD | 3.3 | 3.3 | 由VCC_IO转来,给TF卡 | ||
VCC_WL | 1.8 | 1.79 | 由VCC_18转来给WiFi蓝牙用 | ||
VCC_LCD | 3.3 | 1.1 | 给RK3288内的EDP和LVDS供电,且转出FPC | 不一致 | |
VCC50_USB | 无电压 | 4.76 | 很显然 | ||
VDD_CPU | 1 | 1.35 | VCC_SYS通过SY827转出 | ||
VDD_GPU | 1 | 0.89 | VCC_SYS通过SY827转出 | ||
+V16P0_BKLT_IN | 5 | 4.97 | |||
VCCIO_FLASH | 1.8 | 1.8 | 给EMMC供电也去了RK3288的PIN由VCC_IO出来 | ||
VSYS_DISP | 3.3 | 0 | 背光使能 | ||
VCCIO_CODEC | 1.8 | 1.79 | |||
硬件上似乎还看不出问题,这里可能要去dts查了,先放下来,因为看到别人的博客,我在想既然Android是基于Linux内核起来的,那就把之前调试好的Ubuntu系统的东西烧进去,然后烧录Android的文件系统看一下log信息。
烧录的是Ubuntu的kernel.img发现log信息和Android的log信息,几乎一模一样。
烧录的是Ubuntu的kernelimg和resource.img文件报错信息,重启多次的log会有两个版本,其一个是kernel启动很短的过程,在DDR DEBUG的过程中停下来的,另一个是比较和之前关掉es8323的过程是一样的,从这里总结出的信息是不是firefly给出的编译方法出来的很多驱动源码还是在kernel中,并没有把很多厂商的驱动源码放到硬件抽象层。还有呢?
根据目前的信息掌握度,发现有一个Android的硬件抽象层,这一层放了很多再Linux中原本放在内核中的硬件驱动程序,所以理论上理解时,从开发板上移植到自己的板子时,会出现硬件抽象层的驱动不对劲,然后自己的硬件是不能用的,这可以理解,但关内核什么事呢?
接下来还是一层一层的往下关闭kernel源码中的硬件驱动,这个驱动不止在自己的板子上跑,也要在开发板上跑,这样来看看这个Android内核到底是个什么鬼。当然资料要继续看了。
把关闭了es8323的烧录文件烧到了开发板上,和想的一样当然也不会出现es8323,不过通过对比发现开发板和司板会有一些可能引起注意的信息:“[ 1.242285] mmcblk0: p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p141358..dw_mci_set_ios: no card. [mmc1]”这条信息显示的内容是在司板上的,和开发板对比下来,好像mmc1没起来,贴一下开发板的信息:“[ 1.105850] mmcblk0: p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13[ 1.107046] dwmmc_rockchip ff0c0000.rksdmmc: DW MMC controller at irq 64, 32 bit host data width, 256 deep fifo”开发板上的信息似乎是起来的。贴一张对比图片
这个信息,没仔细看出来什么。
接下来还是一步一步来,关闭log信息现实的最后一个“[ 1.366166] rockchip-spdif-card rockchip-spdif-card.25: rk-hdmi-spdif-hifi <-> ff880000.rockchip-spdif mapping ok”关闭spdif
根据之前关闭es8323的思路,这次直接在Kconfig文件中取消这个选项看看会报什么错,但是先还是在menuconfig下改一下看
编译的报错信息这样显示
根据报错显示,grep一下看看发现好多文件都有,准备一个一个来看,根据上次经验在./sound/soc/rockchip/hdmiin_audio.c这个文件可能性很大,先从这里做起
打开./sound/soc/rockchip/hdmiin_audio.c文件找到“snd_hdmiin_capture_mode”共有两处,注释掉。
编译下来还是包一样的错误,仔细再看看细节上搞错了
grep的是“snd_hdmiin_capture_mode”那么应该在和“snd_pcm_capture_open”相关的文件中改,所以刚刚在./sound/soc/rockchip/hdmiin_audio.c中不应该立即改,先把注释取消了。在./sound/core/pcm_native.c文件中注释掉
从信息看,确实把第二个错误注释掉了。继续grep -r "snd_stop_hdmi_in_audio_route" ./ 根据结果来显示
根据对应关系,应先打开./sound/soc/rockchip/hdmiin_audio.c这个文件注释掉snd_stop_hdmi_in_audio_route先看看结果
报错依旧
接下来再看相关的./drivers/media/video/rk_camsys/tc358749.c这个文件把其中的snd_stop_hdmi_in_audio_route注释掉
因为发现注释掉的信息,在我注释之前也会看到其他的注释信息,所以我住校的信息都会加上标识。
编译完竟然还有报错
这个显示一个报错了,自信看是snd_start_hdmi_inaudio_route,没仔细看到,有start和stop之分,现在把start也注释掉,保存编译。
还是报错
还是会报错,根据报错信息只要在hamiin_audio_store关键字相关的文件中处理就行,报错的话去tc358749文件中去看看,注释掉start相关
竟然编译通过了,看一下结果。这点上我很奇怪根据报错信息,不显示tc358749.c的文件里,应该在hdmiin_audio相关的文件里,如果不是之前有在处理这个 undefined reference to `snd_stop_hdmi_in_audio_route'使知道有这个tc358749.c文件可能就不知道怎么解决了,这说明有些报错不一定全部在报错显示的相关文件里,如果实在找不到错误所在,就全部搜索,注释试试。
把编译结果烧录到开发板和司板,开发板依然能启动,各自的log信息目前看不出什么区别。
Android编译笔记二相关推荐
- 第一行代码 Android读书笔记(二)
第一行代码 Android读书笔记 第三章 软件也要拼脸蛋-UI开发的点点滴滴 常用控件的使用方法 详解4种基本布局 自定义控件 最常用和最难用的控件-ListView 更加强大的滚动控件-Recyc ...
- android英语笔记二
1.banner 旗帜 2.android studio 如何找到类的出处,右键选择"Find Usages" 3.subject n. 主题,话题;学科,科目;[哲]主观 adj ...
- Android编译系统分析二:mm编译单个模块
因为Android的编译系统不同于Linux Kernel的递归式的编译系统,它的编译系统是一种称之为independent的模式,每个模块基本独立(它有可能依赖其他模块),每个模块都可以单独编译,这 ...
- Android 编译系统分析(二)
把Android所有的Make文件分为4种: 1.For config 这类文件主要来配置product,board,以及根据你的Host和Target选择相应的工具以及设定相应的通用编译选项: bu ...
- Android逆向笔记(二) -- 破解AutoR的注册码验证
文章目录 0x0 前言 0x1 界面分析 0x2 反编译 0x3 破解 0x0 前言 此软件为练习用Crackme.apk 仅有验证逻辑 此软件不同于普通的Android软件, 是由Mono for ...
- [Android学习笔记二] View转化Bitmap
在View类中的onDraw方法的参数Canvas是View绘制的背景,要将View转换为Bitmap实际上就是让Canvas上的绘制操作绘制到Bitmap上. View转化为Bitmap也称为截屏, ...
- Android编译笔记之五
在官网上看到的编译kernel时的两条命令 make ARCH=arm rockchip_defconfig make ARCH=arm rk3288-firefly-rk808.img 第一条命令等 ...
- Android编译笔记三
关闭外围谁被还是要做的,但是现在中间像把dts替换成司板之前Ubuntu能用的dts,试一下. 发现好像没什么变化,但是和开发板的log信息已经很接近了,前期的不一样也消除了很多. 又把Ubuntu的 ...
- Android编译笔记一
在kernel下的make menuconfig中禁用es8323 在kernel中执行make -j8 firefly-rk3288.img 报错显示如下 看了Kconfig menuconfi ...
最新文章
- python 画图 内存-python来做专项测试-内存测试
- Java / JVM是如何构建的? 采用OpenJDK是您的答案!
- ExtJs + Struts2 + JSON 程序总结
- iOS底层探索之多线程(十七)——通过 Swift的Foundation源码分析锁(NSLock、NSCondition、NSRecursiveLock)
- 使用Adorner显示WPF控件的边界点
- 清除Conficker蠕虫病毒详细步骤
- python个人简历爬取_python爬取简历模板
- c#制作仿win7屏幕键盘之笔记
- mysql计算相关系数_用sql实现相关系数的计算
- python如何拼读英语单词怎么写_Python简单的拼写检查
- 服务器版博客系统、前后端交互1
- 北京大学生物信息学(9)第二代基因组测序技术
- 寻票软件医院挂号攻略
- 20135220谈愈敏-期末总结
- 集合有哪些 java_java集合有哪些
- Python数据分析实战【十二】:机器学习决策树算法案例实战【文末源码地址】
- 快手福虎迎春季短视频涨粉活动规则[快手获取商品详情]
- 进口配额管理和出口配额管理_实行配额许可证管理的进出口商品及其申领方法...
- 环境艺术设计是计算机,【艺术设计论文】环境艺术设计计算机辅助设计研究(共5097字)...
- 庄懂的TA笔记(十三)<特效-混合模式:四种主要透明通道用法 AC,AB,AD,自定义混合>
热门文章
- linux ping策略打开_linux ping策略打开_如何在Linux服务器禁止和开启ping包 互联网技术圈 互联网技术圈......
- python soup findall 第几个元素_python – 如何在BeautifulSoup中获取所有父标签的列表?...
- python框架怎么学_Python框架学习
- python写前端代码_哪种ide能同时写java和前端代码?
- ElasticSearch重启之后shard未分配问题的解决
- 【Python面试】 列举Python中的标准异常类?
- 苹果x可以双卡吗_苹果12支持双卡吗
- 去除图片水印_只需一键,即可快速去除图片水印!如此简单的方法,谁不知谁吃亏...
- eclipse打包项目为aar_eclipse中将项目打包成jar的两种方法,及其问题与解决方法...
- squid 不缓存特定页面_【零基础学云计算】squid代理服务器介绍与配置(理论+实践)一...