SDM660平台使能I2C或者UART口开不起机_mengluoxixiang的博客-程序员秘密

技术标签: 安卓驱动  

当使能一个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

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/mengluoxixiang/article/details/100540431

智能推荐

企鹅号自媒体怎么过新手期,企鹅号怎么赚钱_lutongseo的博客-程序员秘密

如今有很多自媒体平台,而除了很多流量比较少以外,企鹅号,大鱼号,头条号等都是比较大的平台。今天我们就来介绍一下怎么过企鹅号新手期,开始赚钱一、什么是新手期?1、新手期是没有收益的,企鹅号注册完成,通过资质审核之后即进入新手期。2、新手期企鹅号等级为1级,可正常发布文章、视频,所发内容经过审核后,也都有机会获得系统推荐。二、如何通过新手期?1、设置新手期,是为了让...

matlab和通达信,matlab量化通达信_哥谭市原住民的博客-程序员秘密

顶底趋势指标(通达信)此指标是我精心收藏的指标,无未来函数,真正的好指标。图片演示在下面网址里.趋势:SMA(((CLOSE-LLV(LOW,28))/(HHV(HIGH,28)-LLV(LOW,28))*100),3,1) ,COLORGREEN;STICKLINE(趋势&gt;50,趋势,50,4,0),COLOR32329B;STICKLINE(50&gt;趋势,趋势,50,4,0),COL...

[玩转SQL]:04 组函数_会飞的唐老鸭的博客-程序员秘密

组函数输入多行数据AVG取平均值COUNT统计行MAX取最大值MIN取最小值STDDEV取标准方差SUM求和VARIANCE取标准偏差

Xilinx原语学习之时钟资源相关原语_weixin_30908103的博客-程序员秘密

一直来,都是使用Vivado中自带的GMIItoRGMII IP核来完成GMII转RGMII的功能;尽管对GMII及RGMII协议都有一定的了解,但从没用代码实现过其功能。由于使用IP时,会涉及到MDIO配置IP寄存器的问题,觉得麻烦。因此决定用代码实现GMII转RGMII的功能。参考Lattice的开源代码,进行移植。移植后在Vivado中进行编译时没有问题,但一旦进行实现(Implemen...

iOS开发——WebView加载HTML图片大小自适应与文章自动换行_都丰GZH的博客-程序员秘密

本文主要讲述了如何在iOS应用中使用WebView加载HTML图片时实现自适应与文章自动换行功能,现在把相关的实现思路和代码整理出来分享给iOS程序员兄弟们,希望给他们的开发工作带来帮助。在很多App中都会使用到webview,尤其是在加载新闻内容等文章形式的数据时。因为图文混编以及不同字体格式的显示,在iOS进行编辑和显示都是一大问题(当然,iOS中也可以用CoreText进行绘制),但

计算机显卡性价比推荐,哪个型号显卡性价比最高?显卡性价比天梯图告诉你答案..._DetonationCP的博客-程序员秘密

大家都知道,要了解一款显卡的具体性能如何,最直观的方法就是去查询显卡天梯图,显卡天梯会将各个显卡型号从低到高排列,越往上边的性能就越高。然而平时我们会经常听到“性价比”这个词,那么对于显卡而言,什么型号的显卡性价比最高呢?这里小编为大家带来一张显卡性价比天梯图,可以帮助你了解目前的显卡哪个型号的性价比最高(注意,是性价比天梯图,性价比,性价比,性价比,重要的事说三遍。。)好了言归正传,显卡的性价比...

随便推点

WebSphere Application Server V7高级安全性加强,第2部分_weixin_33690963的博客-程序员秘密

2019独角兽企业重金招聘Python工程师标准&gt;&gt;&gt; ...

Opencv2.4学习::形态学处理(一)腐蚀、膨胀操作_mmcv腐蚀膨胀操作_dieju8330的博客-程序员秘密

形态学处理(一)1、腐蚀、膨胀操作 膨胀 简单来讲,膨胀操作就是选定窗口大小,然后在原图上滑动,窗口中心点的取值为窗口内所有像素点的最大值。下给出过程图,个人认为下图比上面的解释图更为通俗易懂。对单个像素的膨胀操作如下: (1)请把下图看做是方格纸,黑色部分也是,第一张图为对像素(1,1)进行膨胀操作,红色框为选取的核大小:(2)第二张图为对像素(2,2...

递归学习:N皇后 [暨接受六神指点后感]_蜗牛刀的博客-程序员秘密

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

014 Cadence Virtuoso 教程_SilentLittleCat的博客-程序员秘密

安装安利一下公众号:鱼与渔大学生服务,参考一下里面的安装教程基本教程参考下面这个大学的教程http://ee.usc.edu/~redekopp/ee209/virtuoso/setup/USCVLSI-VirtuosoTutorial.pdf设计流程反相器实例演示虚拟机安装后界面新建个工作目录,右键打开命令行启动Cadence Virtuoso# 前台启动,关掉命令行会关闭Virtuosovirtuoso# 后台启动,关掉命令行也不会关闭Virtuosovirtuoso

python下编译py成pyc和pyo_dev_zyx的博客-程序员秘密

其实很简单,用python -m py_compile file.pypython -m py_compile /root/src/{file1,file2}.py编译成pyc文件。也可以写份脚本来做这事:Code:import py_compile&amp;amp;amp;nbsp;py_compile.compile('pa...

推荐文章

热门文章

相关标签