Jump to content

    

wanderlust

Участник
  • Content Count

    9
  • Joined

  • Last visited

Community Reputation

0 Обычный
  1. HBI-0056B

    Здравствуйте. Имеется Core Module HBI-0056B на базе ARM7TDMI. Стоит задача изменить рабочие частоты для процессора и PCI шины. Делается это (теоретически) вот таким куском кода: UNLOCK_VALUE EQU 0xA05F LOCK_VALUE EQU 0xFFFF HDR_OSC EQU 0x10000008 HDR_LOCK EQU 0x10000014 CLK50 EQU 0x0015C000 CLK20 EQU 0x00120000 SC_OSC EQU 0x11000004 SCLOCK EQU 0x1100001C CLK_AP_30 EQU 0x70 CLK_AP_26 EQU 0x60 ENTRY LDR r0,=HDR_LOCK LDR r1,=UNLOCK_VALUE STR r1,[r0] LDR r2,=HDR_OSC LDR r1,=CLK50 STR r1,[r2] LDR r1,=LOCK_VALUE STR r1,[r0] LDR r0,=SCLOCK LDR r1,=UNLOCK_VALUE STR r1,[r0] LDR r2,=SC_OSC LDR r1,=CLK_AP_30 STR r1,[r2] LDR r1,=LOCK_VALUE STR r1,[r0] END В последнем сегменте кода, который начинается с загрузки значения SCLOCK в третьей сторке выскакивает exception (Cause: Data Abort). Я так подозреваю, что связано это с тем, что пишеться значение не туда куда надо (могу и ошибаться, т.к. профан). В процесе написания программы использовались ARM Integrator/AP User Guide и ARM CM7TDMI User Guide. Может у кого-то есть опыт, в какую сторону надо копать? Спасибо.
  2. Доброго времени суток. Вобщем второй день никак не могу понять, что происходит с прошивкой... Вроде раньше было все нормально. Итак. Система Linux, терминал minicom с наложеным патчем для прошивки AT91 от Koan 1. Беру плату EVM9200 подкючаем все как положено. 2. Грузим AT91RM9200-29lv160d.bin 3. После загрузки, когда выпрыгивает буковка С -- грузим из архива EVM9200-linux-2.4.19-rmk.bin.tgz файлик boot.bin и прошываем его в флеш (0х00000). 4. Потом грузим u-boot.bin.gz и прописываем со смещением 0х10000 (жмем еденичку). 5. Потом проверяем boot.bin: грузим его еще раз и жмем V (Verify) и тут выскакивает сообщение "Error offset [ 2]". Я сначала подумал, что что-то не так, посему решил посмотреть, что же твориться в загрузчике. Загрузив boot.bin (кстати - хз зачем, но плата хотела, потому выбора не было...) и нажав букву R (Read flash) увидел следующее: FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF [Q]uit Вопрос, что я сделал не так и откуда растут руки? ;) Джампера в следуюющих положениях: J1 - правое, J12 - правое, J11 - правое, J14 - верх. Правым считаю положение от RS232.
  3. Спасибо за ответ. Теперь вроде все ясно :-)
  4. Т.е. в двоичном представлении они будут идентичны? А каким образом тогда отделить ADD R0, R0, R1 и ADD R0, R0, R1 LSL #0 ? Я так понимаю они также будут идентичны? Но ведь это ж разные комманды!
  5. Извените, не тот пример... Я имел ввиду ADD R0,R0, LSL #0
  6. Прошу прощения, вы правы. Итак: команда ADD R0, R0, R0 код операции ADD 0100 поле S 0 поле Rn 0000 поле Rd 0000 поле Rm 0000 поле cond 0000 команда ADD R0, R0, LSL R0 код операции 0100 поле S 0 поле Rn 0000 поле Rd 0000 поле shift_imm 00000 поле Rm 0000 поле cond 0100 так?
  7. Распишите пожалуйста эти комманды в двоичной форме, для всех 32-х бит. Хочу сверить со своим вариантом.
  8. Я понимаю, что пример выбран дурацкий... Но все же.... они не идентичны... Ну по крайней мере, если верить тому документу, который я привел выше (ARM Architecture Reference Manual). Собственно потому меня и заинтересовал этот вопрос.
  9. Здравствуйте. Пробую разобратся с сабжем. И тут у меня возник вопрос следующего типа. Есть 2 комманды : 1) ADD R0, R0, R0; 2) ADD R0, R0, LSL #0 Если я пробую их записать в двоичной форме, согласно ARM Architecture Reference Manual, у меня получается, что они идентичны бит в бит. т.е. Код операции у них одинаковый (ADD или 0000); Rd и Rs также нули. Меня смущает запись в параметре Operand2. Согласно вышеуказаному документу Operand2 для первого случая состоит из битов [11:4], которые забиты нулями и поля Rm (4 биты), куда я полагаю вносяться также нули. Operand2 для второго случая состоит из поля shift_imm (5 битов), трёх битов забитых нулями и поля Rm (4 биты), куда как я понимаю тоже надо записать нули... Вот тут я и стопорюсь. Что не так?