Amlogic Linux系列(一)S912盒子刷Khadas ubuntu系统

打算学习一下Amlogic Linux系统,目前已知的amlogic Linux系统包括

1.官方的buildroot(没有技术资料,只支持A311D/S905D3)

2.khadas ubuntu (开源,只对vim系列开发板技术支持):

KVM1-S905X

KVM2-S912

KVM3-A311D

手上有一块amlogic S912的盒子一直没用,buildroot是没法用了,准备将KVM2的ubuntu系统移植到这块板子上,并移植后相关驱动,并做后续的功能测试

这块板子的基本配置:

S912+LPDDR3+32G带RTC数码管

目录

一.安装环境及编译

二.相关修改


一.安装环境及编译

安装相关编译环境

sudo apt-get install git make lsb-release qemu-user-static

下载代码

mkdir -p ~/project/khadas
$ cd ~/project/khadas
$ git clone --depth 1 https://github.com/khadas/fenix
$ cd fenix

目录说明

archives/:一些存档

build/:包括编译的img、uboot、kernel代码等

config/:包括更具体的执行脚本,如编译uboot/kernel等

docs/:文档

downloads/:包括packages下载或编译后的文件

env/:包括环境脚本

packages/:包括第三方包的编译脚本

scripts/:包括编译脚本

编译,S912对应的是kvm2,选择kvm2,第一次选择编译server,然后选择emmc版本

source env/setenv.sh

编译后的img位于build\images目录下。

二.相关修改

因为实际的板子与vim2的板子有所区别,因此编译的固件是没办法使用的,需要做一下修改,我手上的板子是lpddr3的,khadas sdk是不支持的,因此需要对uboot进行相关修改。

1.去掉kvm2 开机检测

+++ b/board/khadas/configs/kvim2.h
@@ -318,10 +318,7 @@
             "run upgrade_check;"\
             "run init_display;"\
             "run storeargs;"\
-            "run combine_key;" \
             "run upgrade_key;" \
-            "run vim2_check;" \
-            "run wol_init;"\
             "forceupdate;" \
             "run switch_bootmode;"

2.支持lpddr3

+++ b/board/khadas/configs/kvim2.h
 /* ddr */
 #define CONFIG_DDR_AUTO_DTB             1
-#define CONFIG_DDR_SIZE                                        0 //MB //0 means ddr size auto-detect
-#define CONFIG_DDR_CLK                                 912  //MHz, Range: 384-1200, should be multiple of 24
+#define CONFIG_DDR_SIZE                                        3072 //MB //0 means ddr size auto-detect
+#define CONFIG_DDR_CLK                                 744  //MHz, Range: 384-1200, should be multiple of 24
 #define CONFIG_DDR4_CLK                                        1008  //MHz, for boards which use different ddr chip
 #define CONFIG_NR_DRAM_BANKS                   1
 /* DDR type setting
@@ -348,17 +345,17 @@
  *    CONFIG_DDR_TYPE_DDR3     : DDR3
  *    CONFIG_DDR_TYPE_DDR4     : DDR4
  *    CONFIG_DDR_TYPE_AUTO     : DDR3/DDR4 auto detect */
-#define CONFIG_DDR_TYPE                                        0x0F /* CONFIG_DDR_TYPE_AUTO */
+#define CONFIG_DDR_TYPE                                        0x02 /* CONFIG_DDR_TYPE_AUTO */
 /* DDR channel setting, please refer hardware design.
  *    CONFIG_DDR0_RANK0        : DDR0 rank0
  *    CONFIG_DDR0_RANK01       : DDR0 rank0+1
  *    CONFIG_DDR0_16BIT        : DDR0 16bit mode
  *    CONFIG_DDR0_16BIT_2      : DDR0 16bit mode, 2ranks
  *    CONFIG_DDR_CHL_AUTO      : auto detect RANK0 / RANK0+1 */
-#define CONFIG_DDR_CHANNEL_SET                 0x0F /* CONFIG_DDR0_RANK01 */
+#define CONFIG_DDR_CHANNEL_SET                 0x03 /* CONFIG_DDR0_RANK01 */
 /* ddr functions */
 #define CONFIG_DDR_FULL_TEST                   0 //0:disable, 1:enable. ddr full test
-#define CONFIG_CMD_DDR_D2PLL                   0 //0:disable, 1:enable. d2pll cmd
+#define CONFIG_CMD_DDR_D2PLL                   1 //0:disable, 1:enable. d2pll cmd
 #define CONFIG_CMD_DDR_TEST                            0 //0:disable, 1:enable. ddrtest cmd
 #define CONFIG_DDR_LOW_POWER                   0 //0:disable, 1:enable. ddr clk gate for lp
 #define CONFIG_DDR_ZQ_PD                               0 //0:disable, 1:enable. ddr zq power down
@@ -366,6 +363,12 @@
 #define CONFIG_DDR4_TIMING_TEST                        0 //0:disable, 1:enable. ddr4 timing test function
 #define CONFIG_DDR_PLL_BYPASS                  0 //0:disable, 1:enable. ddr pll bypass function
 
+/* lpddr3 config */
+#define CONFIG_LPDDR_REMAP_SET                 LPDDR_DIE_ROW_COL_R14_C10
+#define CONFIG_DDR_FUNC_LPDDR3_CA              1
+#define CONFIG_LPDDR3_CA_TRAINING_CA0  0
+#define CONFIG_LPDDR3_CA_TRAINING_CA1  2
+
 /* storage: emmc/nand/sd */
 #define        CONFIG_STORE_COMPATIBLE 1
 /*

2.修改board/khadas/kvim2/firmware/timing.c

diff --git a/board/khadas/kvim2/firmware/timing.c b/board/khadas/kvim2/firmware/timing.c
old mode 100644
new mode 100755
index e050268d3d..c133389d20
--- a/board/khadas/kvim2/firmware/timing.c
+++ b/board/khadas/kvim2/firmware/timing.c
@@ -103,8 +103,8 @@
 #define CONFIG_SOC_VREF    1+ (50+((50*48)/(48+480/(6+1)))) // 880/12  //(50+((50*48)/(48+160)))  //0//50+50*drv/(drv+odt)  (738/12) //0 //0  is auto --70 ---range 44.07---88.04   %
 #define CONFIG_DRAM_VREF  1+ (50+((50*37)/(37+48)))// 860/12 // 0// (810/12) // 0 //77 //0 //0  is auto ---70 --range -- 45---92.50    %
 #elif (CONFIG_DDR_TYPE == CONFIG_DDR_TYPE_LPDDR3)
-#define CONFIG_SOC_VREF  51
-#define CONFIG_DRAM_VREF 51
+#define CONFIG_SOC_VREF  51//(1+ (50+((50*48)/(48+480/(3+1)))))//51
+#define CONFIG_DRAM_VREF 51//(1+ (50+((50*53)/(53+120))))//51
 #else
 #define CONFIG_SOC_VREF  51
 #define CONFIG_DRAM_VREF 51
@@ -475,6 +475,21 @@ ddr_set_t __ddr_setting = {
 								[3]=( 23| 24 << 5 | 25 << 10 | 26 << 15 | 27 << 20 | 30 << 25 ) ,
 								[4]=( 31| 12 << 5 | 13 << 10 | 28 << 15 | 0 << 20 | 0 << 25 ) ,
 	},
+#elif (CONFIG_LPDDR_REMAP_SET ==  LPDDR_DIE_ROW_COL_R14_C10)
+	.ddr0_addrmap			= {
+								[0]=( 5 |  6 << 5 |  7 << 10 |  8 << 15 |  9 << 20 | 10 << 25) ,
+								[1]=( 11| 30 << 5 | 0 << 10 | 14 << 15 | 15 << 20 | 16 << 25 ) ,
+								[2]=( 17| 18 << 5 | 19 << 10 | 20 << 15 | 21<< 20 | 22 << 25 ) ,
+								[3]=( 23| 24 << 5 | 25 << 10 | 26 << 15 | 27 << 20 | 29 << 25 ) ,
+								[4]=( 31| 12 << 5 | 13 << 10 | 28 << 15 | 0 << 20 | 0 << 25 ) ,
+	},
+	.ddr1_addrmap			= {
+								[0]=( 5 |  6 << 5 |  7 << 10 |  8 << 15 |  9 << 20 | 10 << 25) ,
+								[1]=( 11| 30 << 5 | 0 << 10 | 14 << 15 | 15 << 20 | 16 << 25 ) ,
+								[2]=( 17| 18 << 5 | 19 << 10 | 20 << 15 | 21<< 20 | 22 << 25 ) ,
+								[3]=( 23| 24 << 5 | 25 << 10 | 26 << 15 | 27 << 20 | 29 << 25 ) ,
+								[4]=( 31| 12 << 5 | 13 << 10 | 28 << 15 | 0 << 20 | 0 << 25 ) ,
+	},
 #endif /*CONFIG_LPDDR_REMAP_SET*/
 #else
 	.ddr0_addrmap			= {0},
@@ -500,7 +515,7 @@ ddr_set_t __ddr_setting = {
 							[3] = (20000 | (136 << 20)),
 							[4] = (1000 | (180 << 16)),
 							},  //PUB PTR0-3
-	.t_pub_odtcr			= 0x00030000,
+	.t_pub_odtcr			= 0x00010000,
 	.t_pub_mr				= {
 							(0X0 | (0X1 << 2) | (0X0 << 3) | (0X0 << 4) | (0X0 << 7) | (0X0 << 8) | (0X7 << 9) | (1 << 12)),
 							(0X6|(1<<6)),
@@ -545,9 +560,10 @@ ddr_set_t __ddr_setting = {
 
 #if (CONFIG_DDR_TYPE == CONFIG_DDR_TYPE_LPDDR3)
 //lpddr3
-	.t_pub_zq0pr			= 0x0ca1c, //0x0ca1c,   //PUB ZQ0PR  //lpddr3
-	.t_pub_zq1pr			= 0x1cf3c,   //PUB ZQ1PR
-	.t_pub_zq2pr			= 0x1cf3c,   //PUB ZQ2PR
+	///**lpddr3 mcp
+	.t_pub_zq0pr			= 0x0ca58, //0x0ca1c,   //PUB ZQ0PR  //lpddr3
+	.t_pub_zq1pr			= 0x1cf39,   //PUB ZQ1PR  38 3b
+	.t_pub_zq2pr			= 0x1cf39,   //PUB ZQ2PR  38
 	.t_pub_zq3pr			= 0x1dd1d,   //PUB ZQ3PR
 
 /* 2layer board
@@ -607,8 +623,8 @@ ddr_set_t __ddr_setting = {
 ///*lpddr3
 #if (CONFIG_DDR_TYPE == CONFIG_DDR_TYPE_LPDDR3)
 	.t_pub_acbdlr0			= 0,  //CK0 delay fine tune  TAKE CARE LPDDR3 ADD/CMD DELAY
-	.t_pub_aclcdlr			= 0,
-	.t_pub_acbdlr3			= 0x2020,//0,  //CK0 delay fine tune b-3f  //lpddr3 tianhe 2016-10-13
+	.t_pub_aclcdlr			= 0xf,
+	.t_pub_acbdlr3			= 0x0,//0,  //CK0 delay fine tune b-3f  //lpddr3 tianhe 2016-10-13
 #elif (CONFIG_DDR_TYPE == CONFIG_DDR_TYPE_DDR4)
 //2layer board DDR4
 	.t_pub_acbdlr0			= 0, //0x3f,
@@ -629,20 +645,20 @@ ddr_set_t __ddr_setting = {
 #if (CONFIG_DDR_TYPE == CONFIG_DDR_TYPE_LPDDR3)
 	//tianhe lpddr3 20161013
 	.wr_adj_per 			= {
-							[0] = 90, //aclcdlr
+							[0] = 100, //aclcdlr
 							[1] = 100,
-							[2] = 120,
-							[3] = 110,
-							[4] = 120,
-							[5] = 105,
+							[2] = 100,
+							[3] = 100,
+							[4] = 100,
+							[5] = 100,
 							},
 	.rd_adj_per				= {
 							[0] = 100,
 							[1] = 100,
-							[2] = 110,
-							[3] = 110,
-							[4] = 110,
-							[5] = 110,},
+							[2] = 100,
+							[3] = 100,
+							[4] = 100,
+							[5] = 100,},
 #else
 	/* P212 */
 	.wr_adj_per				= {

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值