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

Alexey75

Участник
  • Постов

    25
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о Alexey75

  • Звание
    Участник
    Участник
  1. MT-Link

    MT-Link номер 11111117, то определяется как неизвестное устройство, то работает нормально, в чем проблема?
  2. Определяю putchar, но при использовании printf, новая putchar не вызывается
  3. Системы нет, программа пишется для контроллера, хочу для отладки через printf выводить сообщения в UART
  4. Хочу сделать чтобы функции, выводящие в стандартный вывод, выдавали например в UART. Но пока не могу найти какие функции в GCC нужно определить или переопределить.
  5. Интересует, возможна ли работа с MT-Link под Linux-ом.
  6. Проблема решилась, когда я подменил не функцию _sbrk, а функцию _sbrk_r, файл _sbrk_r.c был взят из newlib-lpc_rel_5a. В результате линкер перестал ругаться, что встретил два определения функции и нормально подменил библиотечную функцию.
  7. Третий раз пишу - написать свою одноименную и все. Не представляю, по каким причинам сие может не сработать. С третьего раза я понял о чем вы говорите :) , буду разбираться с компилятором
  8. Даже затрудняюсь предположить, что можно сделать "не так" :( Не хотелось бы задавать глупые вопросы, но как сделать, чтобы компилятор не обращал внимание на существование библиотечной функции, а брал бы новый вариант функции.
  9. Я видимо не совсем ясно выразился, когда задавал вопрос. Вобщем то у меня нет желания делать какие-то навороты по управлению памятью. Проблема возникает когда я размещаю стек во внутренней памяти LPC2214, а heap во внешней (большего размера). Если разместить heap ниже стека то все работает нормально, уже проверил. Просто хотелось бы чтобы стек находился в быстрой внутренней памяти, но там мало места, чтобы размещать там и heap. По большому счету я понял что делать, у меня просто не получилось сделать так, чтобы при компиляции вместо библиотечной функции использовалась измененная мной функция.
  10. Абсолютно все равно где находится стек. Что-то у Вас с причиной другое совсем. Я делал пошаговое выполнение, так вот в функции _sbrk проверяется, чтобы выделяемая область памяти не попадала на стек: caddr_t _sbrk (int incr) { extern char end asm ("end"); /* Defined by the linker. */ static char * heap_end; char * prev_heap_end; if (heap_end == NULL) heap_end = & end; prev_heap_end = heap_end; if (heap_end + incr > stack_ptr) { /* Some of the libstdc++-v3 tests rely upon detecting out of memory errors, so do not abort here. */ #if 0 extern void abort (void); _write (1, "_sbrk: Heap and stack collision\n", 32); abort (); #else errno = ENOMEM; return (caddr_t) -1; #endif } heap_end += incr; return (caddr_t) prev_heap_end; }
  11. Пишу программу для LPC2214 с внешней SRAM, разместил область стека во внуреннем ОЗУ, а кучу во внешнем, но при использовании функций динамического выделения памяти прога зависает. Как оказалось проблема в том что куча находится выше указателя стека и из-за этого выдается ошибка ENOMEM. После поисков в internet и в документации к Newlib, стало ясно что надо написать другой вариант фунции sbrk, но при этом возникли вопросы: 1. как называть новую переопределяемую функцию (в разных местах ее называют как sbrk, _sbrk, _sbrk_r, может еще как-нибудь) 2. как пристроить эту новую функцию, чтобы она заменила существующую библиотечную и линкер бы не ругался
  12. Исходники к ucosView 1.33 усть в _µC/OS-II and the NXP LPC2138 Processor_
  13. После загрузки порта для LPC, в архиве обнаружил исходники. µC/OS-II and the NXP LPC2138 Processor: µC/OS-II and the NXP LPC2148 Processor: µC/USB and the NXP LPC2888 Processor: Причем содержимое в разных архивах отличается не только портами.
  14. LPC2214 и S1D13705

    Не удается организовать обмен данными между LPC2214 и S1D13705. S1D13705 сконфигурирован как Generic #1, тактовый сигнал 14,74МГц поступает с выхода XCLK LPC2214 на BCLK и CLKI S1D13705. Пытаюсь записать данные во внутреннюю память S1D13705, а затем считать их, чтобы проверить, в результате считанные данные отличаются от записываемых. Все сигналы шины соответствуют тому что должно быть, но странно ведет себя WAIT на S1D13705, импульсы WAIT практически совпадают с импульсами WE и RD, хотя по временным диаграммам в даташите на S1D13705, они должны заканчиваться раньше. Не пойму в чем дело?
  15. Насколько я понял речь идет о скрипте, который запускается для инициализации GDB. Не могли бы вы подсказать какую команду можно использовать для установки значений регистров.
×
×
  • Создать...