KEIL 4.50, WEB/FTP c SD Card и/или USB Disk + RTOS (KEIL RTX)



Незаметно в очередной раз обновился KEIL. Наконец то во-первых, заработала возможность использовать USB диск для хранения файлов для WEB сервера, и во-вторых, появилась возможность работы одновременно и с SD и USB дисками.


Читать дальше

STM32 и Дзен. Компиляция и запуск отдельных программ.

По просьбам трудящихся решил поделиться своими наработками.



Возможно, не все, описанное тут, будет правильным решением. Некоторые вещи я делал либо исходя из своих поверхностных представлений о том, как это должно работать, либо вообще по интуиции.
Если в комментариях кто-то отпишется, укажет на ошибки и посоветует более правильное решение — буду очень благодарен.
Может кого-то эта тема заинтересует, и совместными усилиями можно будет что-нибудь эдакое выдать, чтобы потом все желающие могли использовать.

Суть в следующем.
Имеется плата, на которой стоит микроконтроллер STM32 и, например, SD-карточка. Идеальный вариант, если есть SRAM, подключенный по FSMC, но не обязательно. Внутренней памяти, на первое время, хватит.

Что нужно: компилить в Keil (или, возможно, другой среде) программу, заливать ее на SD-карточку и запускать на контроллере.

Как будем запускать?
Сразу на ум приходят два очевидных варианта:
1) Если программа небольшая, в несколько килобайт — заливаем ее в RAM и оттуда запускаем.
2) Если программа побольше — предварительно ее переписываем во внутренний флеш и запускаем из него.

Ну а если программа занимает больше, чем свободно во внутреннем флеше, единственный выход — внешний RAM по FSMC.

В этой статье остановлюсь на первом варианте.

Этап первый. SD и FAT.


Подробно описывать не буду. На эту тему много всего написано как в инете, так и в этом сообществе.
SD-карточку можно подключить по SPI, можно по SDIO (если контроллер F103). И то и то есть в примерах стандартной периферийной библиотеки от ST.
Файловую систему легко поднять с помощью библиотеки FatFs. О ней, вроде, тоже были статьи.
И вообще, можно и без файловой системы обойтись, главное, чтобы можно было откуда-нибудь считать предварительно откомпиленную программу.

Этап второй. Подготовка проекта с программой.




Читать дальше
  • +8
  • 02 октября 2011, 18:42
  • Ezhik
  • 1

STM32 и USB. Часть 2. Немного о драйверах и софте.

Связанные статьи:
STM32 и USB. Часть 1. Проект для Keil.

В прошлой части я рассказал как примерно должен выглядеть проект-заготовка для Keil девайса с USB, дал ссылку на мой проект и рассказал как его настроить под практически любую плату с STM32.

В проекте был реализован интерфейс с двумя bulk-ендпойнтами (in и out), с моим «кастомным» протоколом, при помощи которого можно включать, выключать и заставлять светоиоды мигать с нужными временами горения/не горения.

Ну и выложил небольшую программу для всего этого:



Пользователь Vga в комментариях справедливо заметил, что разработка своего драйвера под Windows — задача далеко не тривиальная, и что проще реализовать стандартный класс, например HID, под который драйверы есть.

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



Читать дальше
  • +4
  • 21 сентября 2011, 14:03
  • Ezhik

STM32 и USB. Часть 1. Проект для Keil.

Связанные статьи:
STM32 и USB. Часть 2. Немного о драйверах и софте.

Введение

После того как я вдоволь наковырялся с STM32 и USB, решил что было бы неплохо поделитсья опытом с окружающими. Тем более, что все делалось аж под три разные платы и две разные линейки процессоров: High-Density (STM32F103RET6, STM32F103VET6) и Connectivity-Line (STM32F107VCT6).

Платы у меня в руках оказались следующие:

1) STM32 Development Board MINI (512K Flash 64K SRAM) 2.4-inch QVGA TFT module
(ссылка 1) (ссылка 2)
На ней стоит микроконтроллер STM32F103VET6

Плата 1


Читать дальше
  • +4
  • 09 сентября 2011, 20:19
  • Ezhik
  • 3

"Вкусности" Keil uVision4.

О чем данная статья: о IDE Keil uVision4, точнее, о разных удобностях, которые она предоставляет программисту. Т.к. работаю с МК Silabs x51, в статье будут небольшие пояснения, как же заставить Keil работать с этими камешками. Для удобства, части текста, которые касаются х51, выделены курсивом.

Итак, Вы стали счастливым обладателем Keil uVision4. Установили среду, создали проект, написали код. А что дальше?


Читать дальше
  • +2
  • 26 августа 2011, 12:06
  • do_sl

Портирование примера udp_echo_server для отладочной платы ST322xG_EVAL на отладку TE-ST32F207 в среде KEIL.

Речь идёт об этом примере с сайта ST: www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/stm32f2x7_eth_lwip.zip

Ну тут всё просто, примеры от ST со временем становятся удобнее и красивее.

1. Идём в main.h и закомментируем
#define USE_LCD
на строке 39.


Читать дальше

Вопрос.LPC2468+Keil. Подгружаемый участок кода.

Ну вот понимаю что можно так сделать, но как-то гложут сомнения в исполнении данной задачи. Вторую неделю бьюс.
Вводная: система построена на базе МК LPC2468. Рабочая программа, проверенна, отлажена.Система должна иметь возможность переключаться между двумя режимами работы. Но дело все в том что исполняемый код данных режимов также будет меняться. В чем встал вопрос: «загрузка поточного кода Userовской программы выполнения во внутреннее ОЗУ и исполнение ее там». Посредством внешнего интерфейса данных (в данном случае Ethernet) загружается данный участок кода в ОЗУ и передается управление данной программе.
Расположить участок кода в ОЗУ при компиляции не составляет труда, но вот как расположить его в процессе работающей программы. Думал так:
— Выделить участок памяти в ОЗУ, прописать пустую функцию(без тела)
— принимаемый код программы располагать в участке зарезервированной функции
— индицировать прием и запись программы и передать ей управление
Расположить участок кода можно путем резервирования места в файле "..Obj\*.sct"

;*************************************************************
;*** Scatter-Loading Description File generated by uVision ***
;*************************************************************

LR_IROM1 0x00000000 0x00080000  {    ; load region size_region
  ER_IROM1 0x00000000 0x00080000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x40000000 0x00000FFF  {  ; RW data
   .ANY (+RW +ZI)
   }

  RW_IRAM2 0x4001000  0x0000F001{      ; место для подгружаемой программы
   User_Prog.o(+RW +ZI)
  }

}


Буду рад любому совету и ответу.
P.S. Может стоит создать Ветку «Ищу Ответ» или «Вопросы»?
  • 0
  • 14 июля 2011, 15:00
  • Zov

LPCXpresso в Keil uVision4

На днях пришла моя платка LPCXpresso от NXP. Позапускав примеры из комлекта среды LPCXpresso и наигравшись с отладчиком, я решил написать какой-нибудь свое. Родная среда на базе Eclipse очень тормозная и и местами неудобная. Проект создался совсем не там, где я указал, а там где лежал workspace c примерами. Каждый запуск отладчика надо ждать пока он опять чего-то перекомпилирует, потом потихонечку запускается отладка. Кнопка просто заливки прошивки есть, но она все время забывает путь и не сбрасывает контроллер после прошивки, хотя галочка такая есть.
Поэтому я решил попробовать перейти на кейл.


Читать дальше

LPC1768. HTTP&FTP с SD/MMC

Запустить WEB сервер с Flash диска у меня пока не получилось, сказывается отсутствие отладчика. Зато легко и просто можно запустить HTTP и FTP сервера и заставить их работать с SD/MMC карточкой. Библиотека KEIL-а Real-Time Library имеет в своем составе драйвера для подключения SD/MMC различными способами ко многим контроллерам. Карты поддерживаются вплоть до 32 гигов, файловые системы поддерживаются FAT12/16 и FAT32.


Читать дальше