Сообщение от espectr0
|
Странный вопрос, зачем это делать? С какими МК работаете?
|
На данный момент изучаю LPC2101. А дело вот в чем. В проекте указан Default startup crtlpc2k.o . При попытке открыть его блокнотом оттуда вываливается всякий бред, видимо он чем-то был до этого обработан. В другой папке(libsrc.arm) есть исходник стартапа для него: файл crtlpc2k.s . При открытии блокнотом в таблице векторов следующее:
LDR PC,cstart_addr ; reset
SUB PC,PC,#8 ; undefined instruction
SUB PC,PC,#8 ; software interrupt
SUB PC,PC,#8 ; prefetch data abort
SUB PC,PC,#8 ; data abort
SUB PC,PC,#8 ; not used
LDR PC,[PC,#-0xFF0] ; IRQ
SUB PC,PC,#8 ; FIQ
Т.о. все прерывания кроме IRQ и Reset здесь не используются. С IRQ вроде все ясно: при поступлении запроса процессор переходит(и действительно переходит) в адресное пространство контроллера VIC, который уже на аппаратном уровне переключается на выбранной слотовый вектор. А у меня в книге пример есть с FIQ(в книжке правда про KEIL написано), который я и хочу попробовать. Т.е. мне на место вектора FIQ надо написать что-то типа
LDR PС, FIQ_Handler
А как потом из асма прыгнуть на СИшную функцию?
И как ему объяснить чтобы компилятор потом скушал именно мой собственный стартап crtlpc2k.s из моей папки?
Я бы конечно не задавал такие глупые вопросы если к компилятору ICСV7ARM был бы нормальный хелп(или любое другое описание в интернете), описывающий не только абстрактную теорию, но и еще хоть какие-нибудь примеры по этой и ей подобным темам.
Вообще, я немного разочаровался в ImageCraft: нет хорошего хелпа, Application Builder хорошо глючит(у меня нормально настроилось только MAM и IRQ, остальное все с ошибками), нет макроопределений всех регистров контроллера, названия регистров не соответсвуют даташиту ну еще много чего. Какой-то сырой и недоделанный он.