zoukankan      html  css  js  c++  java
  • N76E003之ISP

    Flash存储器支持硬件编程和应用编程(IAP)。如果产品在研发阶段或产品需要更新软固件时,硬件编程就显得不太方便,采用在系统编程(ISP)方式,可使这一过程变得方便。执行ISP不需要将控制器从系统板上拆下来。通过软件控制可以重新编程设备。因此这使得更新应用程序固件ISP得到广泛的应用。
    用户可以开发自己的引导代码放在LDROM中。LDROM最大为4KB。用户开发的引导代码可以通过并行烧录器或是电路编程器(ICP)下载到LDROM中去。
    一般来说,ISP是PC与MCU之间进行通讯。PC通过串口传输新的用户代码给MCU。然后引导代码接收这些数据,将这些数据通过IAP命令编程到用户代码区域。新唐针对N76E003提供ISP固件和PC端软件,这样可以很容易实现ISP通过UART端口升级代码。

    以下是简单ISP参考代码
    汇编例程代码:
    ;******************************************************************************
    ; This code illustrates how to do APROM and CONFIG IAP from LDROM.
    ; APROM are re-programmed by the code to output P1 as 55h and P0 as aah.
    ; The CONFIG2 is also updated to disable BOD reset.
    ; User needs to configure CONFIG0 = 0x7F, CONFIG1 = 0xFE, CONFIG2 = 0xFF.
    ;******************************************************************************
    PAGE_ERASE_AP EQU 00100010b
    BYTE_PROGRAM_AP EQU 00100001b
    BYTE_READ_AP EQU 00000000b
    ALL_ERASE_CONFIG EQU 11100010b
    BYTE_PROGRAM_CONFIG EQU 11100001b
    BYTE_READ_CONFIG EQU 11000000b
    ORG 0000h
    CLR EA ;disable all interrupts
    CALL Enable_IAP
    CALL Enable_AP_Update
    CALL Erase_AP ;erase AP data
    CALL Program_AP ;programming AP data
    CALL Disable_AP_Update
    CALL Program_AP_Verify ;verify Programmed AP data

    CALL Read_CONFIG ;read back CONFIG2
    CALL Enable_CONFIG_Update
    CALL Erase_CONFIG ;erase CONFIG bytes
    CALL Program_CONFIG ;programming CONFIG2 with new data
    CALL Disable_CONFIG_Update
    CALL Program_CONFIG_Verify ;verify Programmed CONFIG2
    CALL Disable_IAP

    MOV TA,#0Aah ;TA protection
    MOV TA,#55h ;
    ANL CHPCON,#11111101b ;BS = 0, reset to APROM
    MOV TA,#0Aah
    MOV TA,#55h
    ORL CHPCON,#80h ;software reset and reboot from APROM
    SJMP $
    ;********************************************************************
    ; IAP Subroutine
    ;********************************************************************
    Enable_IAP:
    MOV TA,#0Aah ;CHPCON is TA protected
    MOV TA,#55h
    ORL CHPCON,#00000001b ;IAPEN = 1, enable IAP mode
    RET
    Disable_IAP:
    MOV TA,#0Aah
    MOV TA,#55h
    ANL CHPCON,#11111110b ;IAPEN = 0, disable IAP mode
    RET
    Enable_AP_Update:
    MOV TA,#0Aah ;IAPUEN is TA protected
    MOV TA,#55h
    ORL IAPUEN,#00000001b ;APUEN = 1, enable APROM update

    RET
    Disable_AP_Update:
    MOV TA,#0Aah
    MOV TA,#55h
    ANL IAPUEN,#11111110b ;APUEN = 0, disable APROM update
    RET
    Enable_CONFIG_Update:
    MOV TA,#0Aah
    MOV TA,#55h
    ORL IAPUEN,#00000100b ;CFUEN = 1, enable CONFIG update
    RET
    Disable_CONFIG_Update:
    MOV TA,#0Aah
    MOV TA,#55h
    ANL IAPUEN,#11111011b ;CFUEN = 0, disable CONFIG update
    RET
    Trigger_IAP:
    MOV TA,#0Aah ;IAPTRG is TA protected
    MOV TA,#55h
    ORL IAPTRG,#00000001b ;write ‘1’ to IAPGO to trigger IAP process
    RET

    ;********************************************************************
    ; IAP APROM Function
    ;********************************************************************
    Erase_AP:
    MOV IAPCN,#PAGE_ERASE_AP

    MOV IAPFD,#0FFh
    MOV R0,#00h
    Erase_AP_Loop:
    MOV IAPAH,R0
    MOV IAPAL,#00h
    CALL Trigger_IAP
    MOV IAPAL,#80h
    CALL Trigger_IAP
    INC R0
    CJNE R0,#44h,Erase_AP_Loop
    RET
    Program_AP:
    MOV IAPCN,#BYTE_PROGRAM_AP
    MOV IAPAH,#00h
    MOV IAPAL,#00h
    MOV DPTR,#AP_code
    Program_AP_Loop:
    CLR A
    MOVC A,@A+DPTR
    MOV IAPFD,A
    CALL Trigger_IAP
    INC DPTR
    INC IAPAL
    MOV A,IAPAL
    CJNE A,#14,Program_AP_Loop
    RET
    Program_AP_Verify:
    MOV IAPCN,#BYTE_READ_AP

    MOV IAPAH,#00h
    MOV IAPAL,#00h
    MOV DPTR,#AP_code
    Program_AP_Verify_Loop:
    CALL Trigger_IAP
    CLR A
    MOVC A,@A+DPTR
    MOV B,A
    MOV A,IAPFD
    CJNE A,B,Program_AP_Verify_Error
    INC DPTR
    INC IAPAL
    MOV A,IAPAL
    CJNE A,#14,Program_AP_Verify_Loop
    RET
    Program_AP_Verify_Error:
    CALL Disable_IAP
    MOV P0,#00h
    SJMP $
    ;********************************************************************
    ; IAP CONFIG Function
    ;********************************************************************
    Erase_CONFIG:
    MOV IAPCN,#ALL_ERASE_CONFIG
    MOV IAPAH,#00h
    MOV IAPAL,#00h
    MOV IAPFD,#0FFh

    CALL Trigger_IAP
    RET
    Read_CONFIG:
    MOV IAPCN,#BYTE_READ_CONFIG
    MOV IAPAH,#00h
    MOV IAPAL,#02h
    CALL Trigger_IAP
    MOV R7,IAPFD
    RET
    Program_CONFIG:
    MOV IAPCN,#BYTE_PROGRAM_CONFIG
    MOV IAPAH,#00h
    MOV IAPAL,#02h
    MOV A,R7
    ANL A,#11111011b
    MOV IAPFD,A ;disable BOD reset
    MOV R6,A ;temp data
    CALL Trigger_IAP
    RET
    Program_CONFIG_Verify:
    MOV IAPCN,#BYTE_READ_CONFIG
    MOV IAPAH,#00h
    MOV IAPAL,#02h
    CALL Trigger_IAP
    MOV B,R6
    MOV A,IAPFD
    CJNE A,B,Program_CONFIG_Verify_Error
    RET

    Program_CONFIG_Verify_Error:
    CALL Disable_IAP
    MOV P0,#00h
    SJMP $
    ;********************************************************************
    ; APROM code
    ;********************************************************************
    AP_code:
    DB 75h,0B1h, 00h ;OPCODEs of “MOV P0M1,#0”
    DB 75h,0B3h, 00h ;OPCODEs of “MOV P1M1,#0”
    DB 75h, 90h, 55h ;OPCODEs of “MOV P1,#55h”
    DB 75h,080h,0Aah ;OPCODEs of “MOV P0,#0Aah”
    DB 80h,0Feh ;OPCODEs of “SJMP $”
    END

     按照那条路,一步一步走,如果感觉慢,那就加快一些脚步,时不我待,可是别因为着急就什么也不管不顾,那样损失会更多

  • 相关阅读:
    Byteart Retail V3 全新的面向.NET与领域驱动设计的企业应用实践案例
    算法设计和数据结构学习堆排序
    OutputCacheProvider OutputCache的一点点认识
    使用beetle简单地实现高效的http基础服务
    The IoC container
    使用Visual Studio 2010进行UI自动化测试
    PortalBasic Java Web 应用开发框架 v2.6.1(源码、示例及文档)
    发展中的 CSS3
    C#数据结构与算法揭秘十
    Sql Server Profiler跟踪查询
  • 原文地址:https://www.cnblogs.com/zhugeanran/p/9272573.html
Copyright © 2011-2022 走看看