打印
[AVR单片机]

AVR芯片是不是每一片都有一个号?

[复制链接]
3851|11
手机看帖
扫描二维码
随时随地手机跟帖
来自 2楼
testcode| | 2010-7-28 02:14 | 只看该作者
具体的读写方法,参考:
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=82824&highlight=xmega
/*
* Example of using Offsetof() from stddef.h.
*
* This example reads the XMega chip serial number and revision.
*
* Who thought it was a good idea to put the revision letter on the
* bottom of the chip?
*/


#include  /* uint8_t et.al */
#include  /* offsetof() */
#include

/* From application note AVR1316: */
#include "avr_compiler.h" /* Compile with GCC release of WinAVR20090313 */
#include "sp_driver.h"

/* Change hex8() to match what your hardware needs to display a byte */
#define hex8(x) do{ /* display byte here */ }while(0)

int main( void )
{
  /* Read the part signature and revision: */
  hex8( MCU.DEVID0 ); hex8( MCU.DEVID1 ); hex8( MCU.DEVID2 );
  hex8( (uint8_t) (MCU.REVID+'A') );

  /* XMega serial number: */
  (void) SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, LOTNUM0 ) ); /* First read after reset or possibly Power Up returns zero, so read then toss this value */

  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, LOTNUM0 ) ) );
  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, LOTNUM1 ) ) );
  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, LOTNUM2 ) ) );
  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, LOTNUM3 ) ) );
  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, LOTNUM4 ) ) );
  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, LOTNUM5 ) ) );

  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, WAFNUM ) )  );
  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, COORDX0 ) ) );
  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, COORDX1 ) ) );
  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, COORDY0 ) ) );
  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, COORDY1 ) ) );

  /* Analog Calibrations: */
  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, TEMPSENSE0 ) ) );
  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, TEMPSENSE1 ) ) );

  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, ADCACAL0 ) ) );
  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, ADCACAL1 ) ) );

  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, ADCBCAL0 ) ) );
  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, ADCBCAL1 ) ) );

  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, DACAOFFCAL ) ) );
  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, DACACAINCAL ) ) );

  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, DACBOFFCAL ) ) );
  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, DACBGAINCAL ) ) );

  /* Frequency Calibrations: */
  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, RCOSC2M ) ) );
  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, RCOSC32K ) ) );
  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, RCOSC32M ) ) );
}

使用特权

评论回复
板凳
宇宙飞船| | 2010-7-27 16:37 | 只看该作者
每个型号肯定要有一个特定的型号识别ID,至于细到每一片一个不同的ID,这个就只能问ATMEL了。

使用特权

评论回复
地板
hotpower| | 2010-7-27 20:44 | 只看该作者
这个是有的~~~ISP或IAP都可读出。
逆向之范例:CortexMo菜鸟逆向学习ISP(第4天作业)

使用特权

评论回复
5
testcode| | 2010-7-28 02:12 | 只看该作者
ATXMEG系列有独立的SN:

The production signature row also contains a device ID that identify each microcontroller devicetype, and a serial number that is unique for each manufactured device. The serial number consistof the production LOT number, wafer number, and wafer coordinates for the device.

使用特权

评论回复
6
cool_coder| | 2010-7-28 10:57 | 只看该作者
好文,顶一个

使用特权

评论回复
7
windertakers| | 2010-7-30 10:38 | 只看该作者
想当然是有的
以前在晶圆厂做过 每一片晶圆都有编号的

使用特权

评论回复
8
pengfei06| | 2010-8-4 17:38 | 只看该作者
5楼 好样的

使用特权

评论回复
9
jiuri| | 2010-8-5 14:53 | 只看该作者
这东东有了,那加密不是OK了嘛,为什么各位还在为加密大费周择呢?难道···

使用特权

评论回复
10
heiheihaha1215| | 2010-8-6 10:52 | 只看该作者
有的,其实对于应用来说,一般没什么用处···

使用特权

评论回复
11
cao541603| | 2010-8-6 17:29 | 只看该作者
学习了

使用特权

评论回复
12
winhiwang| | 2010-8-9 10:49 | 只看该作者
这样加密好,一个程序对应一个SN,被读出去了也不能写在其他的芯片里运行

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

141

主题

791

帖子

0

粉丝