rtl8881a,ecos,cmj代码提交记录-1

1.英文翻译中文,直接替换language_en.js里面内容,很方便快捷


2.在home.htm里<style type="text/css">后面可以设置页面居中或其他页面布局


3.双语切换home.htm里增加

<meta http-equiv="Content-Type" content="text/html;charset=<% getLangInfo("charset");%>"> \r
<SCRIPT language=Javascript src='<% getLangInfo("lang");%>'></SCRIPT>
可以调用双语切换的函数脚本

4.dw('<tr><td id="SSIDSiteSurvey_button"><input type="button" value="站点扫描" name="refresh" οnclick="SSIDSiteSurvey.window.siteSurvey('+pass_arg+');"></td></tr>')
   替换为:
var hjb_button = '<tr><td id="SSIDSiteSurvey_button"><input type="button" value="';
                       hjb_button += hjb_site_survey;
                     hjb_button += '" name="refresh" οnclick="SSIDSiteSurvey.window.siteSurvey('+pass_arg+');"></td></tr>'
                      dw(hjb_button);
即可把“站点扫描”从js脚本中调取,方便中英文切换

一般是直接用;<script>dw(abcdef)</script>,替换abcdef

或者如下方法替换:
   form.format0.options[0].text="ASCII (5 characters)"; \r
                 form.format0.options[1].text="Hex (10 characters)"; \r

               form.format0.options[0].text= ASCII5; \r
              form.format0.options[1].text= HEX10; \r


5.在fmmget.c里面增加:
       cyg_clock_to_counter(cyg_real_time_clock(), &counter_handle); \r
       cyg_alarm_create(counter_handle, alarm_func, 0, &alarm_handle, &alarm_object); \r
       cyg_alarm_initialize(alarm_handle, cyg_current_time()+ALARM_INTERVAL, ALARM_INTERVAL); \r
       cyg_alarm_enable(alarm_handle); \r
       printf("enable alarm\n");

void alarm_func(cyg_handle_t alarm_handle, cyg_addrword_t data) \r
{
      printf("alarm to reboot\n"); \r
       RunSystemCmd(NULL_FILE,"reboot",NULL_STR); \r
} \r
ecos的时钟、定时器等操作,可以查阅其他资料
这里面有一个bug,alarm_func属于回调函数,里面禁止用printf,这个BUG弄了一天才解除。

6.这两个函数比较有用,设置参数和保存配置的时候用
       apmib_set(mibid, (void *)&tmpVal) \r
       apmib_update(CURRENT_SETTING);

7.在apmib.h里面:
-typedef enum {ENGLISH=0,SIMPLE_CHINESE=1,JAPAN,KOREA,TRADITION_CHAIN} LANGUAGE_TYPE_T;
+typedef enum {SIMPLE_CHINESE=0,ENGLISH=1,JAPAN,KOREA,TRADITION_CHAIN} LANGUAGE_TYPE_T;

-  <table border="1" style="table-layout:fixed" width=610>
+  <table border="0" style="table-layout:fixed" width=610>
可以把页面上的一条线给去掉,这些应该交给UI做的

9.修改5G的默认信道:
在flash.c里面
 pMib->wlan[idx][0].channel = 149;
SDK里面找到的配置文件其实没有生效,只能在flash.c里面writeDefault()函数直接修改了

同上修改SSID也是在这flash.c里面修改:
 strcpy(pMib->wlan[idx][0].ssid, idx?"RTK_123456789":"RTK_123456789");

10、2.4G只有1~11信道,但中国大陆是1~13信道,故修改方法如下:
8192cd_util.c文件里面,static struct channel_list reg_channel_2_4g[] = {结构体里
-       /* CN */                {{1,2,3,4,5,6,7,8,9,10,11},11}, \r
+       /* CN */                {{1,2,3,4,5,6,7,8,9,10,11,12,13},13},
因为SDK默认是使用FCC(美国)的信道,所以修改FCC的更方便操作;
-       /* FCC */               {{1,2,3,4,5,6,7,8,9,10,11},11}, \r
+       /* FCC */               {{1,2,3,4,5,6,7,8,9,10,11,12,13},13}, \r

11. 当SSID长度太长时会出现BUG,修改方法如下:
+//     parent.document.getElementById("wlbasic_ssid0").value = document.getElementById("selSSID_VAL_"+selId).value+"-rpt";
+//     parent.document.getElementById("wisp_ap_ssid").value = document.getElementById("selSSID_VAL_"+selId).value+"-rpt";
+       if(hjb_ssid.length >25){
+          hjb_ssid = hjb_ssid.substring(0,24);
+          parent.document.getElementById("wlbasic_ssid0").value = hjb_ssid+"-rpt";
+          parent.document.getElementById("wisp_ap_ssid").value = hjb_ssid+"-rpt";
+          }
+       else {
+               parent.document.getElementById("wlbasic_ssid0").value = document.getElementById("selSSID_VAL_"+selId).value+"-rpt";
+               parent.document.getElementById("wisp_ap_ssid").value = document.getElementById("selSSID_VAL_"+selId).value+"-rpt";
+               }
+          

关键点是  hjb_ssid = hjb_ssid.substring(0,24);这一项。

12.网口检测有BUG,无法准确判断是否插入网线,对着datasheet和原理图,检查底层配置
int32 wan_link_status(int port)
{
uint32 regData;
uint32 data0;
 
regData = READ_MEM32(PSRP0+((port)<<2));
data0 = regData & PortStatusLinkUp;
return data0;
}
 
而PSRP0+((port)<<2=0xBB80 4128 + 1<<2=0xBB80 412C  这个地址,也的确没错。
那么判断端口状态应该是稳定的,但实际不是。

实际上在 sys_init.c里面,加一个延时就OK了,这个BUG也弄了好几天:
                        val2 = DHCP_SERVER;
                        apmib_set( MIB_DHCP, (void *)&val2);
 
+                       sleep(1);
                        val = wan_link_status(port);
                        if (val) {
                                printf(" ==> router mode\n");

12.不需要网口自动检测
sys_init.c里面
 void auto_opmode(int port)
 {
-       int val, val2;
+       int val, val2, val3;
        apmib_get( MIB_WAN_DETECT, (void *)&val);
 
        if (val == 1) {
@@ -2719,7 +2719,7 @@  void auto_opmode(int port)
                apmib_get( MIB_OP_MODE, (void *)&val2);
        
                sleep(2);
-               if (val == 1 && val2 == BRIDGE_MODE) { //upgrade kit
+       /*      if (val == 1 && val2 == BRIDGE_MODE) { //upgrade kit
                        printf(" ==> AP mode, ");//by hjb
                        val = wan_link_status(port);
                        if (val) {
@@ -2769,7 +2769,42 @@  void auto_opmode(int port)
                                apmib_set( MIB_WLAN_CHANNEL, (void *)&val);
                        #endif
                        }
-               }
+               } */
+               
+                       val3 = DHCP_SERVER;
+                       apmib_set( MIB_DHCP, (void *)&val3);
+               if (val2 == 2) {//WISP
+                       printf(" ==> WISP mode\n");
+                       val = WISP_MODE;
+                       apmib_set( MIB_OP_MODE, (void *)&val);
+                       
+                       val = 1;
+                       apmib_set( MIB_REPEATER_ENABLED1, (void *)&val);
+                       apmib_set( MIB_REPEATER_ENABLED2, (void *)&val);
+                       
+                       #if defined(CONFIG_CMJ_WAN_DETECT)
+                               //change to wlan0-vxd
+                               apmib_set_vwlanidx(NUM_VWLAN_INTERFACE);
+                               apmib_get( MIB_WLAN_CHANNEL, (void *)&val);
+                               //change to wlan0
+                               apmib_set_vwlanidx(0);
+                               apmib_set( MIB_WLAN_CHANNEL, (void *)&val);
+                       #endif
+                       }
+               else{
+                               printf(" ==> router mode\n");
+                               val = GATEWAY_MODE;
+                               apmib_set( MIB_OP_MODE, (void *)&val);
+                               
+                               val = 0;
+                               apmib_set( MIB_REPEATER_ENABLED1, (void *)&val);
+                               apmib_set( MIB_REPEATER_ENABLED2, (void *)&val);
+                               
+                               #if defined(CONFIG_CMJ_WAN_DETECT)
+                               apmib_set( MIB_WLAN_CHANNEL, (void *)&val);
+                               #endif
+                       }

关键是屏蔽 val = wan_link_status(port);这个函数。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
RTL8881AM datasheet 5.1. PACKAGE IDENTIFICATION...........................................................................................................................................6 6. PIN DESCRIPTIONS.........................................................................................................................................................6 6.1. CONFIGURATION UPON POWER ON STRAPPING ...........................................................................................................9 6.2. SHARED I/O PIN MAPPING (DRQFN-164) .................................................................................................................11 6.3. GMAC PIN MODE DESCRIPTION ...............................................................................................................................13 6.3.1. MAC Interface MII/GMII/RGMII Mode Pin Sharing Mappings ..........................................................................13 6.3.2. GMII/RGMII Interface Pin Descriptions..............................................................................................................13 6.3.3. MII MAC Mode Interface Pin Descriptions .........................................................................................................14 6.3.4. MII PHY Mode Interface Pin Descriptions ..........................................................................................................14 7. MEMORY CONTROLLER............................................................................................................................................15 7.1. SDR DRAM CONTROL INTERFACE ...........................................................................................................................15 7.1.1. Features................................................................................................................................................................15 7.1.2. Bank2 and Bank3..................................................................................................................................................15 7.2. DDR DRAM CONTROLLER .......................................................................................................................................16 7.2.1. Features................................................................................................................................................................16 7.3. SPI FLASH CONTROLLER ...........................................................................................................................................16 7.3.1. Features................................................................................................................................................................16 7.3.2. Pin Mode and Definition of Serial and Dual I/O..................................................................................................16 7.4. SOFTWARE REGISTER DEFINITIONS ...........................................................................................................................17 7.4.1. Memory Control Register (MCR) (0xB800_1000) ...............................................................................................17 7.4.2. DRAM Configuration Register (DCR) (0xB800_1004)........................................................................................18 7.4.3. DRAM Timing Register (DTR) (0xB800_1008)....................................................................................................20 7.4.4. DDR DRAM Calibration Register (DDCR) (0xB800_1050)................................................................................22 7.4.5. SPI Flash Configuration Register (SFCR) (0xB800_1200)..................................................................................23 7.4.6. SPI Flash Configuration Register 2 (SFCR2) (0xB800_1204).............................................................................23 7.4.7. SPI Flash Control & Status Register (SFCSR) (0xB800_1208) ...........................................................................24 7.4.8. SPI Flash Data Register (SFDR) (0xB800_120C) ...............................................................................................25 7.4.9. SPI Flash Data Register 2 (SFDR2) (0xB800_1210)...........................................................................................25 8. PERIPHERAL AND MISC CONTROLS......................................................................................................................26 8.1. INTERRUPT CONTROL REGISTERS ..............................................................................................................................26 8.1.1. Global Interrupt Mask Register (GIMR) (0x B800_3000) ...................................................................................26 8.1.2. Global Interrupt Status Register (GISR) (0x B800_3004)....................................................................................28 8.1.3. Interrupt Routing Register 0 (IRR0) (0xB800_3008) ...........................................................................................29 8.1.4. Interrupt Routing Register 1 (IRR1) (0xB800_300C)...........................................................................................29 8.1.5. Interrupt Routing Register 2 (IRR2) (0xB800_3010) ...........................................................................................29 8.1.6. Interrupt Routing Register 3 (IRR3) (0xB800_3014) ...........................................................................................30 8.1.7. Global Interrupt Mask Register 2 (GIMR2) (0xb800-3020).................................................................................30 8.1.8. Global Interrupt Status Register 2(GISR2) (0xB800-3024) .................................................................................31 8.1.9. Interrupt Routing Register 4 (IRR4) (0xB800-3028)............................................................................................32
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值