久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術(shù)學(xué)習(xí)與研究
當前位置:單片機教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

memcpy((unsigned char *)0x0,(unsigned char *)0x30000000,0x1000);

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2014年08月16日   【字體:

前些時候一直不明白"memcpy((unsigned char *)0x0,(unsigned char *)0x30000000,0x1000);"的用途,今天算是了解了,就是將異常向量表放到0地址處、發(fā)生異常的時候CPU總是跳轉(zhuǎn)到這里取指執(zhí)行。

 

如果這里沒有異常向量表、異常就得不到處理、而且CPU還無法從這個區(qū)域返回到跳轉(zhuǎn)之前的地方。

先貼圖

圖中左邊是反匯編代碼、可以看到機器碼。

而且由于映像文件的入口地址Image entry point設(shè)為0x30000000、也就是使用調(diào)試器調(diào)試,

所以圖中的代碼是從0x30000000開始存放(標號'ResetEntry'在0x30000000地址處)。

注意每條語句的機器碼(方括號'[XXX]'里面的數(shù)據(jù))。

右邊是打開的用來下載.bin文件、里面就是機器碼。

它和反匯編里面的機器碼一樣、注意是little endian模式。

運行 memcpy((unsigned char *)0x0,(unsigned char *)0x30000000,0x1000);語句之前、0地址處的值都是FF。

運行完畢之后、0地址處的值如下圖


這條語句是從0x30000000處開始、復(fù)制4K代碼到0地址處。

上圖中從0地址開始的代碼和.bin文件里面的代碼一樣、而且只是前4K一樣。

就我的板子TX-2440來說 :

如果是Norflash啟動、那么0地址在Norflash,就是復(fù)制到Norflash。

如果是Nandflash啟動、那么0地址在BootRAM,就是復(fù)制到BootRAM。

語句這樣做的目的是將異常向量表復(fù)制到0地址處、因為發(fā)生異常的時候、CPU自動跳轉(zhuǎn)到0地址處讀取指令。

要是0地址處沒有這個異常向量表、那么就無法處理異常,中斷就無法執(zhí)行,含有中斷的程序就會出錯,

CPU無法返回到跳轉(zhuǎn)之前的地方。 

沒有這條復(fù)制語句、那么0x0~0x30000000之間的內(nèi)存里絕大多數(shù)是FF、少數(shù)是00 :

 

關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 日韩一区二区在线视频 | 日韩精品一区二区三区中文字幕 | 日韩精品一区在线 | 亚洲成av人片在线观看无码 | 一区二区av| 日韩欧美在线播放 | 国产精品久久久久久久久久免费看 | jizz视频| 日本一区二区三区在线观看 | 亚洲精品欧洲 | 欧美中文视频 | 国产精品一二三区在线观看 | 亚洲国产精选 | 亚洲成人在线免费 | 米奇狠狠鲁 | 国产成人免费视频网站高清观看视频 | 在线亚洲一区二区 | 成人精品在线视频 | 欧美综合国产精品久久丁香 | 伊人网综合 | 精品成人av | 日韩成人影院 | 国外成人免费视频 | 国产免费一区二区 | 亚洲一区精品视频 | 精品国产99| 我爱操 | 欧美成人免费在线视频 | 欧美日韩a| 久久久久久久久久久国产 | 国产一级一级 | 亚洲一区二区在线电影 | 久久久久久91 | 亚洲精品电影网在线观看 | 欧美日韩国产在线观看 | 日本小视频网站 | 免费黄色的视频 | a国产视频 | 国产激情一区二区三区 | 欧美一级片在线观看 | 亚洲欧美一区二区在线观看 |