|
STM32, SourceryG++, FreeRTOS., Ошибка линковки. Нид хелп! |
|
|
|
Oct 5 2011, 11:58
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
В общем, почти всё собрал, исходники скомпилились, дошло дело до линкера. Ошибка Нр раз: в файле линковки есть вкрапление "INCLUDE stm32f10cl-names.inc", которого в проекте нет. Может, это что-то стандартное? Где взять? Если закомментировать, далее идёт "arm-none-eabi/bin/ld.exe: cannot find -lcs3stm32f10cl" На всякий случай, вот что прилагается к проекту.
STM32_FREERTOS_LWIP.zip ( 3.44 килобайт )
Кол-во скачиваний: 101Ещё вот картинку откопал:
Hosted и Unhosted - это что значит? Сдается мне, все это надо искать в Sourcery, но не Lite  Может, ещё где можно взять? PS: если что, я только учусь
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Oct 6 2011, 05:17
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(dimka76 @ Oct 6 2011, 08:33)  А где вы этот проект взяли ? Ой, где только не взял... Сборная солянка. Ещё раз вопрос задам: что же такое "hosted" и "unhosted"? мне вообще-то нужно что-то типа "standalone", то есть резидентно во флеше
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Oct 6 2011, 06:09
|
Знающий
   
Группа: Свой
Сообщений: 526
Регистрация: 24-08-07
Из: Беларусь, Минск
Пользователь №: 30 045

|
Цитата(AHTOXA @ Oct 6 2011, 08:22)  Как я понимаю, hosted = с операционной системой, unhosted = программа всё делает сама. hosted - работа с отладчиком, когда вызовы write, read, ioctl и других передаётся десктопной ОС unhosted - все обработчики локализованы в МК. То есть в случае hosted программы - вызов printf напечатает на компьютере к которому подключен отладчик (если не подключён - хз).
|
|
|
|
|
Oct 6 2011, 11:30
|

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

|
Цитата(AHTOXA @ Oct 6 2011, 15:03)  А это значит, что программе понадобилось динамическое распределение памяти. См. здесь. сдается мне что не "программе" нужен _sbrk_r а какойнибудь функции из libc. настоятельно не рекомендую доводить до такого сотояния когда дизайн проги требует такие вещи. Пример. Даю 50% гарантию что в данном случае прога вызывает что то типа printf. такая функция тянет за собой кучу дряни вплоть до распределения памяти. хуже всего то что это не всегда вылазит - если засунуть в printf в качестве аргумента int то скомпилится и даже работать будет. а вот если float или double (ну типа нада на LCD вывести данные) то тут пудет превеД. отсюда выводы которые я делаю в таких случаях 1. используемая (в данном случае это скорее всего libc ) среда не портирована в достаточной степени для эмбеддед. Я подозреваю что среда тупо использует newlib. 2. необходимо самому реализовать или взять готовую "легкую" версию функционала из библиотек. например dietl ibc, или чтото похожее.
|
|
|
|
|
Oct 6 2011, 11:39
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(AHTOXA @ Oct 6 2011, 15:03)  А это значит, что программе понадобилось динамическое распределение памяти. См. здесь. Подставил, теперь нужен правильный скрипт сборки. Цитата ./stf_syscalls_minimal.o: In function `_write': ...\STM32_FREERTOS_LWIP/stf_syscalls_minimal.c:71: undefined reference to `putChar' ./stf_syscalls_minimal.o: In function `_sbrk': ...\STM32_FREERTOS_LWIP/stf_syscalls_minimal.c:130: undefined reference to `_heap' ...\STM32_FREERTOS_LWIP/stf_syscalls_minimal.c:130: undefined reference to `_eheap' ну, путчар не в счёт...
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Oct 6 2011, 17:50
|

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

|
Цитата(klen @ Oct 6 2011, 17:30)  сдается мне что не "программе" нужен _sbrk_r а какойнибудь функции из libc. настоятельно не рекомендую доводить до такого сотояния когда дизайн проги требует такие вещи. Насколько я помню, там банально один из аллокаторов во FreeRtos использует стандартные malloc и free. Хотя могу и путать, смотрел мельком. Цитата(MrYuran @ Oct 6 2011, 17:39)  Подставил, теперь нужен правильный скрипт сборки. Я уже предложил вариант с правильным скриптом и всем прочим  Ещё вот тут выкладывал чисто сишный вариант, с printf и malloc. Makefile там такой, что хватает всё, что лежит в папке src.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Oct 7 2011, 08:52
|

Местный
  
Группа: Участник
Сообщений: 340
Регистрация: 25-10-05
Из: Пермь, Россия
Пользователь №: 10 091

|
Цитата(klen @ Oct 6 2011, 16:30)  сдается мне что не "программе" нужен _sbrk_r а какойнибудь функции из libc. настоятельно не рекомендую доводить до такого сотояния когда дизайн проги требует такие вещи. Я не согласен с тем, что динамическое распределение памяти - однозначное зло. Это вполне имеющее право на существование средство, которое успешно работает в миллионах самых разных программ. У динамического управления памяти, как и у любого другого, есть свои преимущества и свои недостатки. Их просто надо знать и учитывать при проектировании программы. Цитата(klen @ Oct 6 2011, 16:30)  Пример. Даю 50% гарантию что в данном случае прога вызывает что то типа printf. такая функция тянет за собой кучу дряни вплоть до распределения памяти. хуже всего то что это не всегда вылазит - если засунуть в printf в качестве аргумента int то скомпилится и даже работать будет. а вот если float или double (ну типа нада на LCD вывести данные) то тут пудет превеД. Что, не будет работать? Почему вдруг?  Цитата(klen @ Oct 6 2011, 16:30)  1. используемая (в данном случае это скорее всего libc ) среда не портирована в достаточной степени для эмбеддед. Я подозреваю что среда тупо использует newlib. Я применял newlib в целой куче разных эмбеддед проектов. printf там прекрасно работает и с int, и с float, и с long long...
--------------------
Всего наилучшего, Alex Mogilnikov
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|