12
返回列表 发新帖
楼主: yanbin560

求助:HCS08AC60 BOOTLOADER无法获取MCU信息(已解决)

[复制链接]

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
发表于 2014-10-8 15:33:23 | 显示全部楼层
yanbin560 发表于 2014-10-8 08:30
版主好!我调试的结果是接收到上位机时钟调整的命令后,原程序调整幅度是0x80,我改成0x70就好了。 ...

你好,楼主!
现在Bootloader调试成功了吗?
回复 支持 反对

使用道具 举报

该用户从未签到

8

主题

60

帖子

0

注册会员

Rank: 2

积分
165
最后登录
1970-1-1
 楼主| 发表于 2014-10-11 09:35:39 | 显示全部楼层
FSL_TICS_ZP 发表于 2014-10-8 15:33
你好,楼主!
现在Bootloader调试成功了吗?

感谢版主关心,使用串口调试成功了,由于我们正式的产品是LIN线,我现在正在尝试通过LIN线进行bootloader,感觉最大的问题是自身发送的数据会被自己再次接收到,导致错误
回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
发表于 2014-10-11 09:51:22 | 显示全部楼层
yanbin560 发表于 2014-10-11 09:35
感谢版主关心,使用串口调试成功了,由于我们正式的产品是LIN线,我现在正在尝试通过LIN线进行bootloader ...

你好,楼主!
如果你的要将串口通信变成LIN通信的话,如果还是要通过上位机将数据给Device的方式的话。你需要做以下方面的工作:
1. 如果确保与Device建立正确的链接;
2. 上位机如何将数据,有效、正确的传输给Device;

还有有一点,楼主能否解释以下“感觉最大的问题是自身发送的数据会被自己再次接收到,导致错误”,我不是很明白
回复 支持 反对

使用道具 举报

该用户从未签到

8

主题

60

帖子

0

注册会员

Rank: 2

积分
165
最后登录
1970-1-1
 楼主| 发表于 2014-10-17 11:29:17 | 显示全部楼层
本帖最后由 yanbin560 于 2014-10-17 11:32 编辑
FSL_TICS_ZP 发表于 2014-10-11 09:51
你好,楼主!
如果你的要将串口通信变成LIN通信的话,如果还是要通过上位机将数据给Device的方式的话。你 ...

哦,我的意思是:因为LIN 是一根线,上位机发送的数据同时会被自己接收到。现在我增加了数据头和校验位,遇到个问题,向您再请教:
我写入的步骤是:检测FCBEF是否为1,读取需要写入的数据,向目标地址写入了数据,写入命令,设置FCBEF,但完全看不到对应flash 地址的内容有变化,还是FF,不知道怎么回事
回复 支持 反对

使用道具 举报

该用户从未签到

8

主题

60

帖子

0

注册会员

Rank: 2

积分
165
最后登录
1970-1-1
 楼主| 发表于 2014-10-17 15:00:36 | 显示全部楼层
调试发现,在执行下面语句时,并不能看到寄存器内容变化,比如FCMD一直是0,不能观察到变为0x25,请版主帮忙
                lda     #mBurstProg         ;get flash command
                sta           FCMD                         ;write the flash command
                lda           #mFSTAT_FCBEF                 ;mask to initiate command
                sta           FSTAT                         ;[pwpp] register command
回复 支持 反对

使用道具 举报

该用户从未签到

8

主题

60

帖子

0

注册会员

Rank: 2

积分
165
最后登录
1970-1-1
 楼主| 发表于 2014-10-17 16:20:20 | 显示全部楼层
我想测试向地址0x1860内写入一个字节,内容为0xAA,代码如下:
主程序:
          g_Buffer[0]=BOOT_CONNECT;
          FlashPageWrite(0x1860);
写入函数:
FlashPageWrite:
            STHX  ADRS
           
      LDA   #1
      STA   LEN
      
      LDHX    #g_Buffer
      STHX        ADRR
      
            lda           #(mFSTAT_FPVIOL+mFSTAT_FACCERR) ;mask
            sta           FSTAT                                 ;abort any command and clear errors

            mov                  #ProgSubSize, STAT        ;length of flash prog routine to STAT
            tsx
            sthx        STACK
            ldhx         #ProgSubEnd-1                ;point at last byte to move to stack

;                bra         DoOnStack                         ;execute prog code from stack RAM
                ; fallthru to this routine
;*******************************************************************************************
DoOnStack:
                lda         ,x                                 ;read from flash
                psha                                         ;move onto stack
                aix         #-1                         ;next byte to move
                dbnz        STAT, DoOnStack
                tsx                                         ;point to sub on stack
                jmp         ,x                                 ;execute the sub on the stack (will return on it's own)

;*******************************************************************************************
ProgSub:        
                lda           FSTAT                         ;check FCBEF
                and           #mFSTAT_FCBEF                ;mask it
                beq                  ProgSub                        ;loop if not empty
               
                ldhx        ADRR
                lda                  0,x
                aix                  #1
                sthx          ADRR
               
                ldhx         ADRS                         ;get flash address
                sta           0,x                         ;write to flash; latch addr and data
                aix                  #1
                sthx        ADRS
               
                lda     #mByteProg;#mBurstProg         ;get flash command
                sta           FCMD                         ;write the flash command
                lda           #mFSTAT_FCBEF                 ;mask to initiate command
                sta           FSTAT                         ;[pwpp] register command
                dbnz          LEN,ProgSub                ;all bytes in a row?
ChkDoneProg:
                lda           FSTAT                         ;[prpp] so FCCF is valid
                lsla                                         ;FCCF now in MSB
                bpl           ChkDoneProg         ;loop if FCCF = 0
               
                ldhx        STACK
                txs
                rts
ProgSubEnd:
ProgSubSize: equ (*-ProgSub)
;*******************************************************************************************       
回复 支持 反对

使用道具 举报

该用户从未签到

8

主题

60

帖子

0

注册会员

Rank: 2

积分
165
最后登录
1970-1-1
 楼主| 发表于 2014-10-23 09:52:06 | 显示全部楼层
问题解决了,单步看不出来FLASH的变化,寄存器的内容读出来就是0。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-8-2 22:39 , Processed in 0.089375 second(s), 23 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表