|
|
  |
свежак KGP win32/arm/avr/mips/m68k, GNU tools chain |
|
|
|
Nov 28 2011, 22:05
|

бессмертным стать можно тремя способами
    
Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912

|
Цитата(klen @ Nov 28 2011, 20:57)  1. как то мимо проехал, просто закаментил CMSIS две эти функции потому как не разбирался - кто врет: асм на наличие двух одинаковых регистров, или компилятор врет при их генерации. судя по доке для strexb и strexb это не воспрещаться но и не написано что можно (я решил ничего не предпринимать по поводу этого косяка). этот тонкий момент я оставил на потом. кто точно знает как работает ядро по этому вопросу сообщите. 2. моя рабочая гипотеза - врет ассемблер, если так то его можно быстренько подправить (если не будет подводных камней).
2_AHTOXA на мой взгляд они все правильно делают - открылись новые обстаятельства - рефаторинг проекта, а то и редизайнинг пока не позно!! а не ''рекостылинг" ка это делают большенство обезьяноподобных.... нехрен грязь размазывать во времени и пространстве - сразу жопу вытер, помыл и забыл. я бы также сделал. проблем то никаких - имя скрипта поменял и все. немного изменил в ассемблере проверку регистров в инструкциях strexb/strexh, теперь таких сообщений не должно быть: /tmp/cc7ETq9C.s:508: Error: registers may not be the same -- `strexb r0,r0,[r1]' /tmp/cc7ETq9C.s:533: Error: registers may not be the same -- `strexh r0,r0,[r1]' теперь первый операнд не проверяется на равенство со вторым, одеако сравнивается с третьим и в случае совпадения будет сообщение об ошибке тут нада покурить доку ARM CM3 и понять как правильно нада поступать. мгне описание кажется неоднозначным. http://infocenter.arm.com/help/index.jsp?t...a/BABFFBJB.htmlнада посовещатся http://klen.org/Files/DevTools/x86_32-kgp-..._32-20111129.7zсборка релизная для виды 32бит, полная копия 20111126 , за исключением binutils (троганный моими руками  )
|
|
|
|
|
Nov 29 2011, 04:48
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(klen @ Nov 29 2011, 02:17)  в что мешает на линуксе 0.6,0 запустит? религяи не позволяет? Религия-то позволяет. Просто знаний и умений в линуксе маловато. Цитата(klen @ Nov 29 2011, 02:17)  а это что такое я спрашиваю? stm32.cfg: Код deprecated cfg file echo "DEPRECATED! use script 'target/stm32f1x.cfg' not 'target/stm32.cfg'" source [find target/stm32f1x.cfg] Это не то. Это попытка сохранения совместимости на уровне имён конфигов. А меня волнует несовместимость по имени флеша в конфиге. То есть, строчка в моём конфиге Код flash bank $_FLASHNAME stm32x 0 0 0 0 $_TARGETNAME теперь не работает, приходится её менять на Код flash bank $_FLASHNAME stm32f1x 0 0 0 0 $_TARGETNAME Видимо мой способ использования openocd (со своим конфигом) не пришёл в голову разработчикам.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Nov 29 2011, 06:43
|

бессмертным стать можно тремя способами
    
Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912

|
Цитата(AHTOXA @ Nov 29 2011, 08:48)  Религия-то позволяет. Просто знаний и умений в линуксе маловато. Это не то. Это попытка сохранения совместимости на уровне имён конфигов. А меня волнует несовместимость по имени флеша в конфиге. То есть, строчка в моём конфиге Код flash bank $_FLASHNAME stm32x 0 0 0 0 $_TARGETNAME теперь не работает, приходится её менять на Код flash bank $_FLASHNAME stm32f1x 0 0 0 0 $_TARGETNAME Видимо мой способ использования openocd (со своим конфигом) не пришёл в голову разработчикам. ну если все так трагично я могу помоч отцу русской демократии - докостылять версию из транка чтоб она одинаково реагировала на stm32x и stm32f1x и соответсвуеще ситуации назвать этот подарочный именной вариант openocd_0.6.0_SEFAFOTC (SPECIAL_EDITION_FOR_ANTOHA_FAN_OF_THE_COUCH) под как какой хост нада? вот откостыленная выерсия для linux64 http://klen.org/Files/DevTools/openocd_0.6...EFAFOTC.tar.bz2на имя драйвера флеша stm32x реагирует также как на stm32f1x
|
|
|
|
|
Nov 29 2011, 08:59
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
А так пойдет? Код uint32_t __STREXB(uint8_t value, uint8_t *addr) { uint32_t result=0; // __ASM volatile ("strexb %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) ); __ASM volatile ("strexb r2, %2, [%1] \n" \ " mov %0, r2" : "=r" (result) : "r" (addr), "r" (value) : "r2" ); return(result); } Из плюсов: не ругается и компилиться Из минусов: правка стандартного файла и не гарантируется несовпадение регистров.
|
|
|
|
|
Nov 29 2011, 09:24
|

бессмертным стать можно тремя способами
    
Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912

|
Цитата(adnega @ Nov 29 2011, 12:59)  А так пойдет? Код uint32_t __STREXB(uint8_t value, uint8_t *addr) { uint32_t result=0; // __ASM volatile ("strexb %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) ); __ASM volatile ("strexb r2, %2, [%1] \n" \ " mov %0, r2" : "=r" (result) : "r" (addr), "r" (value) : "r2" ); return(result); } Из плюсов: не ругается и компилиться Из минусов: правка стандартного файла и не гарантируется несовпадение регистров. зачем извращатся лишней инструкцийе, попробуйте потестить оновленую сборку (-2 поста вверх), все соберется из стндартных исходников
|
|
|
|
|
Dec 4 2011, 02:22
|

бессмертным стать можно тремя способами
    
Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912

|
Цитата(adnega @ Dec 2 2011, 17:55)  С демкой разобрался, но с FPU пока не работает (не уверен). воткните комиллеру опции -mthumb -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard будет генерится код для fpu, в сборке под cortex-m4f все протянуто (libgcc,libc,libm) с нетерпением жду результов следующий свежак будет 'мои релизом', поэтому хочется его оотестить в хвос и в гриву. будет особыс спросбом собраны libgcc и libc(newlib) чтоб гарантировать чоб в бинарь неприлазило вско гадость.
|
|
|
|
|
Dec 4 2011, 12:35
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(klen @ Dec 4 2011, 06:22)  воткните комиллеру опции -mthumb -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard будет генерится код для fpu, в сборке под cortex-m4f все протянуто (libgcc,libc,libm)
с нетерпением жду результов
следующий свежак будет 'мои релизом', поэтому хочется его оотестить в хвос и в гриву. будет особыс спросбом собраны libgcc и libc(newlib) чтоб гарантировать чоб в бинарь неприлазило вско гадость. Спасибо, буду пробовать. Боюсь, что воевать придется с либой, которая поставляется с демо-примером... Кста, у Вас уже есть на чем самому пробовать?
|
|
|
|
|
  |
6 чел. читают эту тему (гостей: 6, скрытых пользователей: 0)
Пользователей: 0
|
|
|