Изучение уязвимостей электронных систем.
 
key programming immo tools emergency start device программаторы ключа заводилки Кодграббер штатных охранных систем, toyota, lexus, subaru.

Вернуться   Изучение уязвимостей электронных систем > Для начинающих > Новички

Новички Раздел для новичков. Что такое кодграббер, ретранслятор, подмена кода.

Ответ
 
Опции темы
Старый 20.06.2011, 21:35   #1
svesve
Заблокирован
 
Регистрация: 03.06.2011
Сообщений: 115
Поблагодарил: 20
Поблагодарили 9 раз в 9 сообщениях
svesve стоит на развилке
По умолчанию Attiny13 и eeprom Си

Всем доброго времни суток.

Гуру Си и гуру АВР студио, подскажите новичку следующий момент.

Дописываю один из брутов CAME выложенных на данном форуме, проект на ATtiny13 + RT14

Пишу в AVR studio.

На текущий момент доделал остановку брута и пошаговый посыл вперед и назад.

Теперь появилась необходимость при правильном посыле сохранить данные от САМЕ в еепром, как лучше это сделать?? если можно с примером, а так же интересует вопрос как потом все считать???
svesve вне форума   Ответить с цитированием
Старый 23.06.2011, 16:29   #2
tahion
начинающий фрикер
 
Регистрация: 15.06.2009
Сообщений: 624
Поблагодарил: 14
Поблагодарили 540 раз в 127 сообщениях
tahion скоро станет знаменитым(-ой)
По умолчанию

Вот тебе код на асме из моего Came-граба, на Си переведешь сам, все очевидно:


Код:
	LoadByte:						; 
		Sbic  EECR, EEPE
		Rjmp  LoadByte
		Out   EEARL,R16
		Sbi   EECR, EERE
		In    R17,  EEDR
		Ret
	SaveByte:						; 
		Sbic  EECR, EEPE
		Rjmp  SaveByte
		Out   EEAR, R16				;addr
		Out   EEDR, R17				;data
		Sbi   EECR, EEMPE
		Sbi   EECR, EEPE
		Ret
Пишешь в R16 адрес ячейки EEPROM, и вызываешь LoadByte, в R17 будет значение. Или пишешь в R16 адрес, а в R17 данные, затем SaveByte запишет значение из R17 в ячейку EEPROM. Не забывай, что адресация EEPROM начинается с нуля. Т.е. что бы записать в первую ячейку EEPROM нужно в R16 записать 0. Ну и чтобы сохранить 12 битный Came, нужно два байта, в одном будет 8 бит данных, в другом 4...

Последний раз редактировалось tahion; 23.06.2011 в 16:44.
tahion вне форума   Ответить с цитированием
Старый 23.06.2011, 16:48   #3
hex
начинающий фрикер
 
Регистрация: 16.01.2010
Сообщений: 531
Поблагодарил: 11
Поблагодарили 86 раз в 81 сообщениях
hex стоит на развилке
По умолчанию

совершенно незачем переводить из асма на си, в авр студии есть уже готовый код(в 5й прямо в ней в 4й надо поставить winAvr
#include <avr/eeprom.h> // ето подключаеш
и вот список функций:
Functions
uint8_t eeprom_read_byte (const uint8_t *__p) __ATTR_PURE__
uint16_t eeprom_read_word (const uint16_t *__p) __ATTR_PURE__
uint32_t eeprom_read_dword (const uint32_t *__p) __ATTR_PURE__
float eeprom_read_float (const float *__p) __ATTR_PURE__
void eeprom_read_block (void *__dst, const void *__src, size_t __n)
void eeprom_write_byte (uint8_t *__p, uint8_t __value)
void eeprom_write_word (uint16_t *__p, uint16_t __value)
void eeprom_write_dword (uint32_t *__p, uint32_t __value)
void eeprom_write_float (float *__p, float __value)
void eeprom_write_block (const void *__src, void *__dst, size_t __n)
void eeprom_update_byte (uint8_t *__p, uint8_t __value)
void eeprom_update_word (uint16_t *__p, uint16_t __value)
void eeprom_update_dword (uint32_t *__p, uint32_t __value)
void eeprom_update_float (float *__p, float __value)
void eeprom_update_block (const void *__src, void *__dst, size_t __n)

всего 1 строчка кода и ты записал/считал/обновил данные из еепром))) удачи


Когда человек не знает, к какой пристани он держит путь, для него ни один ветер не будет попутным(с)
hex вне форума   Ответить с цитированием
Старый 23.06.2011, 17:45   #4
svesve
Заблокирован
 
Регистрация: 03.06.2011
Сообщений: 115
Поблагодарил: 20
Поблагодарили 9 раз в 9 сообщениях
svesve стоит на развилке
По умолчанию

Спасибо!
Я пробовал с #include <avr/eeprom.h> и т.д. но почему-то не писало в еепром, я хз.
в протеусе все отлично, все пишет, программирую девайс, нифига, еепром пустой.

помог такой код
Код:
unsigned char read_from_internal_eeprom(unsigned int addr) 
  { 
   while (EECR & (1<<EEWE)); //wait for write to finish 
   EEAR = addr; //load the address to read from 
   EECR |= (1<<EERE);//set the read flag 
   //the clock is stopped for 4 cyles 
   EEAR =0; //leave address at 0 so if power down corrupts location 0 
   return  EEDR; 
  } 
  
unsigned char write_internal_eeprom(unsigned int addr,char data) 
 { 
  char cnt; 
  for(cnt=0;cnt<10;cnt++) 
     { 
      if(data==(read_from_internal_eeprom(addr))) //will check in the read routine for write flag being cleared 
         break; 
      EEAR = addr;//load up address 
      EEDR = data; //load up data 
      EECR |= (1<<EEMWE); //enable write 
      EECR |= (1<<EEWE); //start write 
     } 
    return cnt; 
  }
подчти как в даташите по тини13
svesve вне форума   Ответить с цитированием
Старый 23.06.2011, 18:05   #5
tahion
начинающий фрикер
 
Регистрация: 15.06.2009
Сообщений: 624
Поблагодарил: 14
Поблагодарили 540 раз в 127 сообщениях
tahion скоро станет знаменитым(-ой)
По умолчанию

svesve, молодец, только не забывай про прерывания, если они есть в твоей программе.
Например вызвал write_internal_eeprom, а тут бац и прерывание, регистры изменились и в памяти
лажа. Запись еепром идет медленно и перед записью лучше запретить прерывания командой Cli.
tahion вне форума   Ответить с цитированием
Старый 23.06.2011, 18:56   #6
svesve
Заблокирован
 
Регистрация: 03.06.2011
Сообщений: 115
Поблагодарил: 20
Поблагодарили 9 раз в 9 сообщениях
svesve стоит на развилке
По умолчанию

кстати да, это в коде есть, я видимо закоментил и убрал

спасибо!
svesve вне форума   Ответить с цитированием
Ответ

Метки
avr, came brute


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Вопрос] eeprom mmc outlander Иоанн Лаборатория 0 27.05.2013 08:29
[Проблема] Прошить eeprom Radiovor Лаборатория 0 20.09.2011 20:39
[Вопрос] FUSE Bit ATtiny13 NSD Лаборатория 1 16.09.2010 20:33
EEPROM golden1 Новички 1 23.01.2009 01:44
VAG EEprom programmer 1.3 eeciv Одометры 3 30.03.2007 12:59


Текущее время: 19:31. Часовой пояс GMT +4.


Перевод: zCarot