20181213_jeffrey - silenceuncrio/diary GitHub Wiki
1000
早上睡過頭
昨晚安撫我們家寶貝大女兒
從半夜三點到清晨六點 - 其實我也只是撐著打電動
0815 的鬧鐘根本聽不見
1030
ariel 幫我 update 一下 M300 Wizard 的情報
Wizard 的流程如下
Wizard Flow:
(1) Management → Administration
(2) Wan Priority →
ETH Only:
(2.1) WAN → Ethernet
ETH First / LTE First:
(2.1) LTE → Dual SIM
(2.2) WAN → Ethernet
LTE Only:
(2.1) LTE → Dual SIM
(3) LAN → Ipv4
(4) System → Time and Date
不過 Wizard 希望是在 Firmware Upgrade 過後只出現一次
不管使用者需要或不需要 Wizard 的幫忙
出現過一次後 就不再出現
而且透過 Wizard 導覽的每個功能希望都能顯示 online manual
1040
昨天 DQA 抱怨 M360 一上電 power led 沒有點亮
Mitrastar 已經根據我們的需求給出如何在 uboot 點燈的範例
void ledInit(void)
{
u32 value = 0;
/* set uartf_share_mode share pin to gpio mode */
value = le32_to_cpu(*(volatile u_long *)RT2880_GPIOMODE_REG);
#if !defined (RT2880_ASIC_BOARD)
value &= ~0x1C; //clear bit[2:4]UARTF_SHARE_MODE
#endif
#if defined (MT7620_ASIC_BOARD)
value &= ~0x2000; //clear bit[13] WLAN_LED
#endif
value |= RALINK_GPIOMODE_DFT;
*(volatile u_long *)(RT2880_GPIOMODE_REG) = cpu_to_le32(value);
}
void ledCtrl(unsigned char pin, unsigned char state)
{
u32 value = 0;
if (pin <= 21) {
value = le32_to_cpu(*(volatile u_long *)RT2880_REG_PIODIR);
value |= (1 << pin);
*(volatile u_long *)(RT2880_REG_PIODIR) = cpu_to_le32(value);
value = le32_to_cpu(*(volatile u_long *)RT2880_REG_PIODATA);
if (0 == state) {
value &= ~(1 << pin);
}
else {
value |= (1 << pin);
}
*(volatile u_long *)(RT2880_REG_PIODATA) = cpu_to_le32(value);
}
}
今天換個心情先來做 M360 吧
1145
利用下面的 command 進入該 container
docker exec -it -u user build-uboot-m360 /bin/bash
1310
mitratar 提供的範例 compile 會出錯
趕緊 mail 問一下
順道問一下 GPIO 22 這顆 SIM 燈怎麼控制
由 source code 看來是沒辦法透過 ledCtrl() 來控制
1350
剛剛找 ariel 聊一下 DMVPN 這件事
讓她知道一下 NHRP 只是 Cisco 提的 DMVPN 當中的一環罷了
1410
我們當初買一台 Robustel 就有提供 DMVPN 的功能
找時間拿來跟 Cisco 對測一下
不過目前先以 M360 為優先
mitrastar 的 peter 回信了
套了他給的 rt2880.h 後
我修改了 board.c 如下
diff --git a/lib_mips/board.c b/lib_mips/board.c
index e11bf36..f6287c0 100644
--- a/lib_mips/board.c
+++ b/lib_mips/board.c
@@ -1386,6 +1386,79 @@ int check_image_validation(void)
#endif
+
+
+
+
+#define _LED_GPIO_INTERNET 17
+#define _LED_GPIO_LAN 18
+#define _LED_GPIO_POWER 16
+#define _LED_GPIO_SIGNAL_LOW 13
+#define _LED_GPIO_SIGNAL_HIGH 14
+#define _LED_GPIO_SIGNAL_MID 15
+#define _LED_GPIO_SIM 22
+
+
+
+void ledInit(void)
+{
+ u32 value = 0;
+
+ /* set uartf_share_mode share pin to gpio mode */
+ value = le32_to_cpu(*(volatile u_long *)RT2880_GPIOMODE_REG);
+#if !defined (RT2880_ASIC_BOARD)
+ value &= ~0x1C; //clear bit[2:4]UARTF_SHARE_MODE
+#endif
+#if defined (MT7620_ASIC_BOARD)
+ value &= ~0x2000; //clear bit[13] WLAN_LED
+#endif
+ value |= RALINK_GPIOMODE_DFT;
+ *(volatile u_long *)(RT2880_GPIOMODE_REG) = cpu_to_le32(value);
+}
+
+
+
+void ledCtrl(unsigned char pin, unsigned int active_high, unsigned char onoff )
+{
+ unsigned char state = (active_high == onoff) ? 1 : 0;
+
+#if defined (MT7621_FPGA_BOARD) || defined (MT7621_ASIC_BOARD) || \
+ defined (MT7628_FPGA_BOARD) || defined (MT7628_ASIC_BOARD)
+ if ((0 <= pin) && (pin < 32))
+#else
+ if ((0 <= pin) && (pin <= 21))
+#endif
+ {
+ RALINK_REG(RT2880_REG_PIODIR) |= (1 << pin);
+ if (0 == state) {
+ printf("GPIO#%d=low\n", pin);
+ RALINK_REG(RT2880_REG_PIODATA) &= ~(1 << pin);
+ }
+ else {
+ printf("GPIO#%d=high\n", pin);
+ RALINK_REG(RT2880_REG_PIODATA) |= (1 << pin);
+ }
+ }
+
+#if defined (MT7621_FPGA_BOARD) || defined (MT7621_ASIC_BOARD) || \
+ defined (MT7628_FPGA_BOARD) || defined (MT7628_ASIC_BOARD)
+ else if ((32 <= pin) && (pin < 64))
+ {
+ RALINK_REG(RT2880_REG_PIODIR+0x4) |= (1 << pin-32);
+ if (0 == state) {
+ //printf("GPIO#%d=low\n", pin);
+ RALINK_REG(RT2880_REG_PIODATA+0x4) &= ~(1 << pin-32);
+ }
+ else {
+ //printf("GPIO#%d=high\n", pin);
+ RALINK_REG(RT2880_REG_PIODATA+0x4) |= (1 << pin-32);
+ }
+ }
+#endif
+}
+
+
+
/************************************************************************
*
* This is the next part if the initialization sequence: we are now
@@ -2048,6 +2121,26 @@ __attribute__((nomips16)) void board_init_r (gd_t *id, ulong dest_addr)
#ifdef DUAL_IMAGE_SUPPORT
check_image_validation();
#endif
+
+
+
+
+
+
+printf("ledInit()\n");
+ledInit();
+
+printf("ledCtrl(_LED_GPIO_POWER, 0, 0);\n");
+ledCtrl(_LED_GPIO_POWER, 0, 0);
+
+printf("ledCtrl(_LED_GPIO_INTERNET, 0, 1);\n");
+ledCtrl(_LED_GPIO_INTERNET, 0, 1);
+
+
+
+
+
+
+
+
/*config bootdelay via environment parameter: bootdelay */
{
char * s;
(END)
結果還是沒能控制到 power 燈
趕緊整理一下情報再問一下 peter