技术标签: 安卓驱动
当使能一个I2C或者UART功能导致系统开不起机的情况,一般有两点原因:
1、Pin脚被占用
2、在TZ那边,Pin脚给的权限不够
以SDM660平台的I2C_3为例:
我在sdm660-mtp.dtsi文件中使能了i2_3:
&i2c_3 {
status = "ok";
};
结果原本能开机的系统开不起来了……
i2c的配置在sdm660-blsp.dtsi文件中,我们一起来看一下:
i2c_3: [email protected] { /* BLSP1 QUP3 */
compatible = "qcom,i2c-msm-v2";
#address-cells = <1>;
#size-cells = <0>;
reg = <0xc177000 0x600>;
reg-names = "qup_phys_addr";
interrupt-names = "qup_irq";
interrupts = <0 97 0>;
dmas = <&dma_blsp1 8 64 0x20000020 0x20>,
<&dma_blsp1 9 32 0x20000020 0x20>;
dma-names = "tx", "rx";
qcom,master-id = <86>;
qcom,clk-freq-out = <400000>;
qcom,clk-freq-in = <19200000>;
clock-names = "iface_clk", "core_clk";
clocks = <&clock_gcc GCC_BLSP1_AHB_CLK>,
<&clock_gcc GCC_BLSP1_QUP3_I2C_APPS_CLK>;
qcom,i2c-dat = <&tlmm 10 0x00>;
qcom,i2c-clk = <&tlmm 11 0x00>;
pinctrl-names = "i2c_active", "i2c_sleep", "i2c_bitbang";
pinctrl-0 = <&i2c_3_active>;
pinctrl-1 = <&i2c_3_sleep>;
pinctrl-2 = <&i2c_3_bitbang>;
status = "disabled";
};
嗯……以上,似乎没什么问题,好吧,看高通给的SDM660 的GPIO CONFIG文件找对应的pin脚号:
1、检查kernel里pin脚有没有被占用,看sdm660-pinctrl.dtsi文件发现在SPI3的配置中有占用,嗯!果断屏蔽掉!
gpio10和gpio11的占用通通/**/屏蔽掉!
spi_3 {
spi_3_active: spi_3_active {
mux {
pins = "gpio8", "gpio9"/*,
"gpio10", "gpio11"*/;
function = "blsp_spi3";
};
config {
pins = "gpio8", "gpio9"/*,
"gpio10", "gpio11"*/;
drive-strength = <6>;
bias-disable;
};
};
spi_3_sleep: spi_3_sleep {
mux {
pins = "gpio8", "gpio9"/*,
"gpio10", "gpio11"*/;
function = "blsp_spi3";
};
config {
pins = "gpio8", "gpio9"/*,
"gpio10", "gpio11"*/;
drive-strength = <6>;
bias-disable;
};
};
};
更改dtsi后单编的命令为:在LA.UM.7.2\LINUX\android目录下执行 m dtboimage -jx 和 m bootimage -jx
编译出来的文件路径:
LA.UM.7.2\LINUX\android\out\target\product\sdm660_64\dtbo.img
LA.UM.7.2\LINUX\android\out\target\product\sdm660_64\boot.img
adb单刷dtbo和boot的命令:
fastboot flash dtbo dtbo.img
fastboot flash boot boot.img
2、检查TZ端pin脚的权限给的够不够
TZ.BF.4.0.7\trustzone_images\core\buses\qup_accesscontrol\honeybadger\config\QUPAC_660_Access.xml
果然,不仅多配了俩口,连权限给的也只有TZ能用,嗯,改!
<device id=BLSP_QUP3_DEV_ACCESS>
<props name="PERIPH ID" type=DALPROP_ATTR_TYPE_UINT32> BLSP_QUP3 </props>
<props name="GPIO range" type=DALPROP_ATTR_TYPE_BYTE_SEQ> 10, 11, end </props>
<props name="IS_GPIO_PROTECTED" type=DALPROP_ATTR_TYPE_UINT32> 1 </props>
<props name="RW_ACCESS_LIST" type=DALPROP_ATTR_TYPE_BYTE_SEQ> AC_HLOS, end </props>
<props name="IS_PERSISTENT" type=DALPROP_ATTR_TYPE_UINT32> 0 </props>
</device>
更改TZ后单编的命令为:在TZ.BF.4.0.7\trustzone_images目录下执行 ./build_target_sdm660.sh
编译出来的文件路径:TZ.BF.4.0.7\trustzone_images\build\ms\bin\KAJAANAA\devcfg.mbn
adb单刷devcfg.mbn的命令:
fastboot flash devcfg_a devcfg.mbn
fastboot flash devcfg_b devcfg.mbn
如今有很多自媒体平台,而除了很多流量比较少以外,企鹅号,大鱼号,头条号等都是比较大的平台。今天我们就来介绍一下怎么过企鹅号新手期,开始赚钱一、什么是新手期?1、新手期是没有收益的,企鹅号注册完成,通过资质审核之后即进入新手期。2、新手期企鹅号等级为1级,可正常发布文章、视频,所发内容经过审核后,也都有机会获得系统推荐。二、如何通过新手期?1、设置新手期,是为了让...
顶底趋势指标(通达信)此指标是我精心收藏的指标,无未来函数,真正的好指标。图片演示在下面网址里.趋势:SMA(((CLOSE-LLV(LOW,28))/(HHV(HIGH,28)-LLV(LOW,28))*100),3,1) ,COLORGREEN;STICKLINE(趋势>50,趋势,50,4,0),COLOR32329B;STICKLINE(50>趋势,趋势,50,4,0),COL...
组函数输入多行数据AVG取平均值COUNT统计行MAX取最大值MIN取最小值STDDEV取标准方差SUM求和VARIANCE取标准偏差
一直来,都是使用Vivado中自带的GMIItoRGMII IP核来完成GMII转RGMII的功能;尽管对GMII及RGMII协议都有一定的了解,但从没用代码实现过其功能。由于使用IP时,会涉及到MDIO配置IP寄存器的问题,觉得麻烦。因此决定用代码实现GMII转RGMII的功能。参考Lattice的开源代码,进行移植。移植后在Vivado中进行编译时没有问题,但一旦进行实现(Implemen...
本文主要讲述了如何在iOS应用中使用WebView加载HTML图片时实现自适应与文章自动换行功能,现在把相关的实现思路和代码整理出来分享给iOS程序员兄弟们,希望给他们的开发工作带来帮助。在很多App中都会使用到webview,尤其是在加载新闻内容等文章形式的数据时。因为图文混编以及不同字体格式的显示,在iOS进行编辑和显示都是一大问题(当然,iOS中也可以用CoreText进行绘制),但
大家都知道,要了解一款显卡的具体性能如何,最直观的方法就是去查询显卡天梯图,显卡天梯会将各个显卡型号从低到高排列,越往上边的性能就越高。然而平时我们会经常听到“性价比”这个词,那么对于显卡而言,什么型号的显卡性价比最高呢?这里小编为大家带来一张显卡性价比天梯图,可以帮助你了解目前的显卡哪个型号的性价比最高(注意,是性价比天梯图,性价比,性价比,性价比,重要的事说三遍。。)好了言归正传,显卡的性价比...
2019独角兽企业重金招聘Python工程师标准>>> ...
形态学处理(一)1、腐蚀、膨胀操作 膨胀 简单来讲,膨胀操作就是选定窗口大小,然后在原图上滑动,窗口中心点的取值为窗口内所有像素点的最大值。下给出过程图,个人认为下图比上面的解释图更为通俗易懂。对单个像素的膨胀操作如下: (1)请把下图看做是方格纸,黑色部分也是,第一张图为对像素(1,1)进行膨胀操作,红色框为选取的核大小:(2)第二张图为对像素(2,2...
def calcQueens(size): board=[-1]*size return queens(board,0,size)def queens(board,current,size): if(current==size): for i in board: print i
安装安利一下公众号:鱼与渔大学生服务,参考一下里面的安装教程基本教程参考下面这个大学的教程http://ee.usc.edu/~redekopp/ee209/virtuoso/setup/USCVLSI-VirtuosoTutorial.pdf设计流程反相器实例演示虚拟机安装后界面新建个工作目录,右键打开命令行启动Cadence Virtuoso# 前台启动,关掉命令行会关闭Virtuosovirtuoso# 后台启动,关掉命令行也不会关闭Virtuosovirtuoso
其实很简单,用python -m py_compile file.pypython -m py_compile /root/src/{file1,file2}.py编译成pyc文件。也可以写份脚本来做这事:Code:import py_compile&amp;amp;nbsp;py_compile.compile('pa...