Перейти к содержанию
    

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 (троганный моими руками :twak: )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в что мешает на линуксе 0.6,0 запустит? религяи не позволяет?

Религия-то позволяет. Просто знаний и умений в линуксе маловато. :laughing:

а это что такое я спрашиваю?

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 (со своим конфигом) не пришёл в голову разработчикам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Религия-то позволяет. Просто знаний и умений в линуксе маловато. :laughing:

 

Это не то. Это попытка сохранения совместимости на уровне имён конфигов. А меня волнует несовместимость по имени флеша в конфиге. То есть, строчка в моём конфиге

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да не, особой трагедии нет. Так, лёгкая печаль:)

За именную спецсборку - спасибо :biggrin: Только тогда и под венду (можно 32) тоже :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А так пойдет?

 

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);
}

 

Из плюсов: не ругается и компилиться

Из минусов: правка стандартного файла и не гарантируется несовпадение регистров.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А так пойдет?

 

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 поста вверх), все соберется из стндартных исходников

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

зачем извращатся лишней инструкцийе, попробуйте потестить оновленую сборку (-2 поста вверх), все соберется из стндартных исходников

 

Собирается.

Но про равенство регистров нужно помнить...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Собирается.

Но про равенство регистров нужно помнить...

компилятор пусть помнит - у него голова кбольшая, как у лошади, а я луше знать буду, когда нада он мне напомнит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Появилась доска STM32F4DISCOVERY.

 

Собрал из исходников демку для -mcpu=cortex-m4: без оптимизации работает, с оптимизацией - пока нет)

Демка сурьезная: играет WAV-файл с флешки.

 

P.S.: Не работает только с -Os, на -O1 и -O2 работает)

P.S.2: Работает на всех уровнях оптимизации!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Появилась доска STM32F4DISCOVERY.

 

Собрал из исходников демку для -mcpu=cortex-m4: без оптимизации работает, с оптимизацией - пока нет)

Демка сурьезная: играет WAV-файл с флешки.

 

P.S.: Не работает только с -Os, на -O1 и -O2 работает)

P.S.2: Работает на всех уровнях оптимизации!

Попробуйте то же самое на yagarto - есть подозрение, что проблема в "демке", а не в компиляторе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробуйте то же самое на yagarto - есть подозрение, что проблема в "демке", а не в компиляторе.

 

С демкой разобрался, но с FPU пока не работает (не уверен).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С демкой разобрался, но с FPU пока не работает (не уверен).

воткните комиллеру опции -mthumb -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard

будет генерится код для fpu, в сборке под cortex-m4f все протянуто (libgcc,libc,libm)

 

с нетерпением жду результов

 

следующий свежак будет 'мои релизом', поэтому хочется его оотестить в хвос и в гриву. будет особыс спросбом собраны libgcc и libc(newlib) чтоб гарантировать чоб в бинарь неприлазило вско гадость.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

воткните комиллеру опции -mthumb -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard

будет генерится код для fpu, в сборке под cortex-m4f все протянуто (libgcc,libc,libm)

 

с нетерпением жду результов

 

следующий свежак будет 'мои релизом', поэтому хочется его оотестить в хвос и в гриву. будет особыс спросбом собраны libgcc и libc(newlib) чтоб гарантировать чоб в бинарь неприлазило вско гадость.

 

Спасибо, буду пробовать.

Боюсь, что воевать придется с либой, которая поставляется с демо-примером...

 

Кста, у Вас уже есть на чем самому пробовать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, буду пробовать.

Боюсь, что воевать придется с либой, которая поставляется с демо-примером...

 

Кста, у Вас уже есть на чем самому пробовать?

ечть, но руки не доходят, веремени нехватает

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Прошу прощения за отвлеченный вопрос:

Где можно найти гнушные тулзы под АВР АРМ собранные со статическими либами (чтоб под старыми версиями Линуксов нормально бегали)

Заранее спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...