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

dimanisu

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

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

  • Посещение

Репутация

0 Обычный

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

  • Звание
    Участник
    Участник
  1. VslavX! Благодарю за инициативу! Надеюсь, что это не сильно будет Вас напрягать. Вы написали, что планируете прикрутить порт к оф релизу. Насколько я знаю, у Вас есть и собственные наработки для TNKernel(доделки, переделки оф релиза). Можно узнать в чем они заключаются, какие достоинства(недостатки) и, если возможно, посмотреть на исходники Вашей модификации. С Уважением.
  2. Спасибо за ответ. Про Ваш Discovery STM32F4 я в курсе - читал другую темку :) (занятное было состязание с scmrtos). Хотелось бы использовать по полной все возможности STM32F4. Поэтому если Вы сможете это провернуть - это было бы просто великолепно. А по поводу дальнейшего развития этой оси вопрос остается в силе
  3. Здравствуйте! У меня вопрос к разработчику ОС Юрию и всем, кто допиливал ось под себя(VslavX и т.д.), озвученный в названии темы. Будет ли такой порт? Планирую работать с STM32f4. Планируется ли дальнейшее развитие TNKernel? Заранее благодарен за ответы.
  4. hard fault stm32

    Я в дебаге ставил точки останова в конструкторе - они вызываются. Прошу прощения, что за crt код? И если удостоверюсь, то как исправить?
  5. hard fault stm32

    Так и делал изначально. Но потом, когда вылез этот косяк, стал все упрощать, чтобы понять в чем дело С++ мне не нужно изучать. Мне не нужны навороченные gui библиотеки. GUI будет простой. Я начал его писать на си, но потом решил попробовать c++. Под arm ранее писал только на си. Использование С++ для контроллеров для меня в диковинку, вот и решил попробовать. И Сразу грабли . Под дебагером смотрел - сначала вызываются конструкторы, потом только main. Если не не сложно киньте ссылочкой на с++ реализацию под arm.
  6. hard fault stm32

    Есть, структуру я уже продумал. Я сейчас создаю простой gui. И решил испробовать c++ реализацию. Пока создал два класса. TItem и наследника TMenu. Если без наследования(т.е. все в одном классе) то все работает, но вот с наследованием и случается эта беда. Классы немного упрощены и все поля объявлены как public (потом раскидаю по секциям как надо) class TItem; class TItem { public: u16 id; const u8* text; TItem* parent; TItem* prev; // предыдущий сосед TItem* next; // следующий сосед TItem* child; TItem* selected; //выбранный пункт меню u16 count; // счетчик узлов static TItem* active; TItem (const u8* text); void activate(TItem* item); // установка активным друго пункта меню virtual void add(TItem* item); virtual void draw(); virtual void event(u32 event, u32 param1=0, u32 param2=0){} }; class TMenu : public TItem { public: TItem* visible_first_child; //первый отображаемый пункт TItem* visible_last_child; //последний отображаемый пункт TMenu (const u8* text, u16 num_visible_items=1); virtual void add(TItem* item); virtual void draw(); virtual void event(u32 event, u32 param1=0, u32 param2=0); };
  7. hard fault stm32

    У меня такое ощущение, что затык как раз в том, что объекты глобальные. Насколько я понял они создаются до вызова main и тем самым как то поганят программу. Нужно еще выполнять какие либо танцы с бубном, чтобы использовать с++ файлы совместно с сишними (ну там выставлять опции компилятора, править стартапы и т.д. и т.п)?
  8. hard fault stm32

    Объекты создаются глобально.
  9. hard fault stm32

    Здравствуйте! Столкнулся со следующей проблемой. Разрабатываю в keil под stm32. Раньше все проекты писал на си. Сейчас решил опробовать с++. В проекте много сишных файлов. Включил в проект один .cpp файл. Все работало. Решил немного усложнить используемый класс. Ввел наследование. И программа посыпалась – вылетает в hard_fault прерывание. Причем не там, где вызываются мои объекты с их методами, а гораздо раньше и в совершенно другом месте. Объекты создаются как обычно, а не через new: TItem item((const u8*)”текст”); Причем обнаружил следующую закономерность: Если уменьшить количество создаваемых объектов, то программа вроде как работает. Но вот если добавить несколько строчек кода в любое другое место, программа опять вылетает в hard_fault. Пробовал увеличивать размер стека и кучи. Это не помогло. Раньше с таким не сталкивался Подскажите пожалуйста, в чем может быть загвоздка? Вылетает при обращении к жки. Он висит на fsmc шине. Раньше все работало нормально. Код typedef struct { volatile u16 reg; volatile u16 ram; } Tlcd; // Note: LCD /CS is CE4 - Bank 4 of NOR/SRAM Bank 1~4 #define LCD_BASE ((u32)(0x60000000 | 0x0C000000)) #define LCD ((Tlcd *) LCD_BASE) #define WRITE_CMD(value) LCD->reg=value #define WRITE_DATA8(value) LCD->ram=value ************************************************* void init_lcd (void) { //разный код WRITE_CMD(LCD_SOFT_RESET); WRITE_CMD(LCD_SOFT_RESET); // вылетает здесь WRITE_CMD(LCD_SOFT_RESET); } // вот что творит keil Код 199: WRITE_CMD(SSD1963_SOFT_RESET); 0x08003E88 2001 MOVS r0,#0x01 0x08003E8A F04F41D8 MOV r1,#0x6C000000 0x08003E8E 8008 STRH r0,[r1,#0x00] 200: WRITE_CMD(SSD1963_SOFT_RESET); 0x08003E90 8008 STRH r0,[r1,#0x00] 201: WRITE_CMD(SSD1963_SOFT_RESET); 202: 0x08003E92 8008 STRH r0,[r1,#0x00]
  10. hard fault в keil

    Вылетает при обращении к жки. Он висит на fsmc шине. Раньше все работало нормально. typedef struct { volatile u16 reg; volatile u16 ram; } Tlcd; // Note: LCD /CS is CE4 - Bank 4 of NOR/SRAM Bank 1~4 #define LCD_BASE ((u32)(0x60000000 | 0x0C000000)) #define LCD ((Tlcd *) LCD_BASE) #define WRITE_CMD(value) LCD->reg=value #define WRITE_DATA8(value) LCD->ram=value ************************************************* void init_lcd (void) { //разный код WRITE_CMD(LCD_SOFT_RESET); WRITE_CMD(LCD_SOFT_RESET); // вылетает здесь WRITE_CMD(LCD_SOFT_RESET); } // вот что творит keil 199: WRITE_CMD(SSD1963_SOFT_RESET); 0x08003E88 2001 MOVS r0,#0x01 0x08003E8A F04F41D8 MOV r1,#0x6C000000 0x08003E8E 8008 STRH r0,[r1,#0x00] 200: WRITE_CMD(SSD1963_SOFT_RESET); 0x08003E90 8008 STRH r0,[r1,#0x00] 201: WRITE_CMD(SSD1963_SOFT_RESET); 202: 0x08003E92 8008 STRH r0,[r1,#0x00]
  11. Читал, но давно Прошу прощения, просто проблема затрагивает как программирование, так и работу с конкретным процессором. Поэтому сложно определиться куда это нужно было кинуть
  12. hard fault в keil

    Здравствуйте! Не знал в какую ветку форума кинуть сообщение, поэтому кинул и сюда. Столкнулся со следующей проблемой. Разрабатываю в keil под stm32. Раньше все проекты писал на си. Сейчас решил опробовать с++. В проекте много сишных файлов. Включил в проект один .cpp файл. Все работало. Решил немного усложнить используемый класс. Ввел наследование. И программа посыпалась – вылетает в hard_fault прерывание. Причем не там, где вызываются мои объекты с их методами, а гораздо раньше и в совершенно другом месте. Объекты создаются как обычно, а не через new: TItem item((const u8*)”текст”); Причем обнаружил следующую закономерность: Если уменьшить количество создаваемых объектов, то программа вроде как работает. Но вот если добавить несколько строчек кода в любое другое место, программа опять вылетает в hard_fault. Пробовал увеличивать размер стека и кучи. Это не помогло. Раньше с таким не сталкивался Подскажите пожалуйста, в чем может быть загвоздка?
  13. hard fault в keil

    Здравствуйте! Не знал в какую ветку форума кинуть сообщение, поэтому кинул и сюда. Столкнулся со следующей проблемой. Разрабатываю в keil под stm32. Раньше все проекты писал на си. Сейчас решил опробовать с++. В проекте много сишных файлов. Включил в проект один .cpp файл. Все работало. Решил немного усложнить используемый класс. Ввел наследование. И программа посыпалась – вылетает в hard_fault прерывание. Причем не там, где вызываются мои объекты с их методами, а гораздо раньше и в совершенно другом месте. Объекты создаются как обычно, а не через new: TItem item((const u8*)”текст”); Причем обнаружил следующую закономерность: Если уменьшить количество создаваемых объектов, то программа вроде как работает. Но вот если добавить несколько строчек кода в любое другое место, программа опять вылетает в hard_fault. Пробовал увеличивать размер стека и кучи. Это не помогло. Раньше с таким не сталкивался Подскажите пожалуйста, в чем может быть загвоздка?
  14. Каким образом? ???Не понял о чем речь. Поясните пожалуйста. По i2c у меня скорость не очень большая Если не сложно, можно более подробно осветить этот момент именно для работы с rtos.
  15. Спасибо за ответы Demeny, aaarrr. Это я понимаю. Просто в своем первом посте у меня есть третий пункт: Это моя вина, что не расписал, но для общения по i2c я планировал выделить отдельную задачу, т.к. на него навешано еще несколько микросхем, а ему мешает fsmc и в этой задаче он отключается. Отсюда и мое убеждение, что fsmc - это разделяемый ресурс. К тому же, а что произойдет если переключение задач произойдет в момент обращения к шине. rtos тема для меня новая и быть может мои вопросы вас забавляют, в таком случае, поделитесь информацией - как бы вы подступились к этой задаче.
×
×
  • Создать...