Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 24

Тема: Проект << lcs 8051 ide >>

  1. #1
    Junior user Аватар для Friendly
    Регистрация
    26.04.2012
    Сообщений
    577

    Проект "lcs_ide"

    ну, хорошо. Начнем.

    Имеем практически не изученный компилятор SDCC, который "теоретически" нам подходит.
    Он бесплатен, лицензия позволяет создавать закрытый код.
    Нужно сделать оболочку в которой было бы удобно создавать проекты для микроконтроллеров фирмы Analog Devices (серии 800) имеющих ядро Intel 8052.
    В принципе, в последствии, список должен быть расширен для МК SiLabs и Atmel, также имеющих ядро процессора 8052.
    Результатом работы среды программирования LCS 8051 IDE + SDCC должен быть файл в формате HEX, который будет загружаться в МК загрузчиком - по нажатию кнопки Download на панели инструментов.
    Симуляторы, Эмуляторы, Дебаггеры и прочие "штучки" пока не планируем. Это в перспективе.


    Верхний ряд меню закладок должен иметь вид:

    1. File
    2. Edit
    3. Search
    4. Project
    5. Tool
    6. Debug
    7. Options
    8. Window
    9. Help
    Последний раз редактировалось Friendly; 30.03.2013 в 18:15.

  2. #2
    Banned
    Регистрация
    27.04.2012
    Сообщений
    73
    Я думаю имеет смысл перенести тему в раздел "Проекты участников форума".

  3. #3
    Banned
    Регистрация
    27.04.2012
    Сообщений
    73
    По проекту: вкладки не проблема, они нарастут сами по ходу разрбаботки, самое сложное это подключение компилятора и реализация модульной системы, а так же реализация линковки, аутентификации и сборки программ. Нужна спецификация на компилятор.

  4. #4
    Junior user Аватар для Friendly
    Регистрация
    26.04.2012
    Сообщений
    577
    Когда этот проект будет закончен, тогда можно будет туда переложить.
    Сейчас он находится в разделе "Встраиваемые технологии" + "8052", что наиболее точно определяет сферу применения.
    Пмсм, сейчас это наиболее правильно.
    Хотя мне всеравно - можно и туда его положить сразу. Мне, так то, без разницы где он будет лежать.

  5. #5
    Junior user Аватар для Friendly
    Регистрация
    26.04.2012
    Сообщений
    577
    Вот так выглядел файл конфигурации программы C Free 5, когда я подключил к нему досовский компилятор ICC8051.
    Можно по аналогии сделать.


    <Builder name="C51" type="8052" version="1.0">
    <IncPaths>
    <Path>C:\C8051\include\</Path>
    <Pattern>*\include\</Pattern>
    </IncPaths>
    <LibPaths>
    <Path>C:\C8051\lib</Path>
    <Pattern>*\lib</Pattern>
    </LibPaths>
    <ExePaths>
    <Path>C:\C8051</Path>
    <Pattern>*\</Pattern>
    </ExePaths>
    <AutoDetect>
    <Path>C:\C8051\</Path>
    <Reg>\SOFTWARE\CodeBlocks|Path</Reg>
    <Reg>\SOFTWARE\Microsoft\Windows\CurrentVersion\Un install\MinGW_is1|Inno Setup: App Path</Reg>
    <Reg>\SOFTWARE\Microsoft\Windows\CurrentVersion\Un install\MinGW|InstallLocation</Reg>
    </AutoDetect>

    <CompilerOptions>
    <Category name="Memory model">
    <Option value="-mt" desc="Select memory model: tiny [-mt]"/>
    <Option value="-ms" desc="Select memory model: small [-ms]"/>
    <Option value="-mc" desc="Select memory model: compact [-mc]"/>
    <Option value="-mm" desc="Select memory model: medium [-mm]"/>
    <Option value="-ml" desc="Select memory model: large [-ml]"/>
    <Option value="-mb" desc="Select memory model: banked [-mb]"/>
    </Category>
    <Category name="Debugging">
    <Option value="-b" desc="Make object a library module [-b]"/>
    <Option value="-P" desc="Generate PROMable code [-P]"/>
    <Option value="-u" desc="Function return stack expansion [-u]"/>
    <Option value="-g0" desc="Disable object code type-info [-g0]"/>
    <Option value="-gA" desc="Depreaciate K&K-style function [-gA]"/>
    </Category>
    <Category name="Warnings">
    <Option value="-e" desc="Disable warnings’ [-e]"/>
    </Category>
    <Category name="Optimization">
    <Option value="-z" desc="optimize for size (default) [-z]"/>
    <Option value="-s" desc="optimize for speed [-s]"/>
    </Category>
    <RawOptionsDebug enabled="1">
    <Default></Default>
    <User>-ml -P -i -g -x</User>
    </RawOptionsDebug>
    <RawOptionsRelease enabled="0">
    <Default></Default>
    <User>-ml -P -i -g -x</User>
    </RawOptionsRelease>
    </CompilerOptions>
    <LinkerOptions>
    <LibsDebug enabled="1">
    <Default></Default>
    <User><Lib>C:\C8051\lib\CL8051L.R03</Lib></User>
    </LibsDebug>
    <LibsRelease enabled="0">
    <Default></Default>
    <User><Lib></Lib></User>
    </LibsRelease>
    <RawOptionsDebug enabled="1">
    <Default></Default>
    <User>-z -x -B</User>
    </RawOptionsDebug>
    <RawOptionsRelease enabled="0">
    <Default></Default>
    <User>-z -x -B</User>
    </RawOptionsRelease>
    </LinkerOptions>
    <Configs>
    <BuildLog enabled="1">$(PrjDir)\Build.log</BuildLog>
    <LibExt>r03</LibExt>
    <ObjExt>r03</ObjExt>
    <ResExt>hex</ResExt>
    </Configs>
    <Commands msghandler="Dm.mhr">
    <Command name="ICC8051" io="1" rdos="0" sys="0">
    <Program enabled="1">ICC8051.exe</Program>
    <Parameter enabled="1"> $(CompilerOptions) $(FileName) -I$(IncPaths) -a $(ExePaths)work\dolly5.S03 -l $(Paths)dolly5.lst</Parameter>
    <FileExt enabled="1">c</FileExt>
    <Target>$(ExePaths)work\dolly5.s03</Target>
    <TargetType>s03</TargetType>
    <CurrentDir>$(FilePath)</CurrentDir>
    <EnvVar></EnvVar>
    <MsgID>Compiling....$(FILENAME)...#81001</MsgID>
    </Command>
    <Command name="A8051" io="1" rdos="0" sys="0">
    <Program enabled="1">asm.bat</Program>
    <Parameter enabled="0"> </Parameter>
    <FileExt enabled="1">s03</FileExt>
    <Target>$(ExePaths)work\dolly6.r03</Target>
    <TargetType>r03</TargetType>
    <CurrentDir>$(FilePath)</CurrentDir>
    <EnvVar></EnvVar>
    <MsgID>Asm..........#81003</MsgID>
    </Command>
    <Command name="Linker" io="1" rdos="0" sys="0">
    <Program enabled="1">XLINK.exe</Program>
    <Parameter enabled="1"> $(ExePaths)work\dolly6.r03 -f $(ExePaths)xcl\LNK8051.xcl $(LinkerOptions) -l $(ExePaths)work\dolly7.lst -o $(ExePaths)work\$(Name).hex</Parameter>
    <FileExt enabled="1">r03</FileExt>
    <Target>$(ExePaths)work\$(Name).hex</Target>
    <TargetType>hex</TargetType>
    <CurrentDir>$(FilePath)</CurrentDir>
    <EnvVar></EnvVar>
    <MsgID>Linking........#81004</MsgID>
    </Command>
    </Commands>
    <Actions>
    <Action name="Compile" depend="1">
    <File><Command>"ICC8051"</Command></File>
    <Project>
    </Project>
    <MsgID>Complete Compile $(FileName): $(Error) error(s), $(Warning) warning(s)\nGenerated $(Target)#81005</MsgID>
    <ErrMsgID>Complete Compile $(FileName): $(Error) error(s), $(Warning) warning(s)#81006</ErrMsgID>
    <PreAction></PreAction>
    <PostAction con="0"></PostAction>
    </Action>
    <Action name="Build" depend="0">
    <File> <Command>"ICC8051""A8051""Linker"</Command>
    </File>
    <Project>
    </Project>
    <MsgID>Complete Build $(TargetName): $(Error) error(s), $(Warning) warning(s)\nGenerated $(Target)#81007</MsgID>
    <ErrMsgID>Complete Build $(TargetName): $(Error) error(s), $(Warning) warning(s)#81008</ErrMsgID>
    <PreAction></PreAction>
    <PostAction con="0"></PostAction>
    </Action>
    <Action name="Make" depend="1">
    <File>
    </File>
    <Project>
    <Command>"ICC8051""A8051""Linker"</Command>
    </Project>
    <MsgID>Complete Make $(TargetName): $(Error) error(s), $(Warning) warning(s)\nGenerated $(Target)#81009</MsgID>
    <ErrMsgID>Complete Make $(TargetName): $(Error) error(s), $(Warning) warning(s)#81010</ErrMsgID>
    <PreAction></PreAction>
    <PostAction con="0"></PostAction>
    </Action>
    </Actions>
    </Builder>

  6. #6
    Junior user Аватар для Friendly
    Регистрация
    26.04.2012
    Сообщений
    577
    Так выглядели строки командных файлов (.bat) для запуска в пакетном режиме:

    компилятора:
    icc8051.exe -ml c:\c8051\c\dolly4.c -P -i -g -x -Ic:\c8051\include\ -a c:\c8051\work\dolly5.s03 -l c:\c8051\work\dolly5.lst

    ассемблера:
    a8051.exe c:\c8051\work\dolly5, c:\c8051\work\dolly6.lst, c:\c8051\work\dolly6.r03, X, F, W, S

    линкера:
    XLINK c:\c8051\work\dolly6.r03 -f c:\c8051\xcl\lnk8051.xcl -z -x -B -l c:\c8051\work\dolly7 -o c:\c8051\work\dolly8.hex

    Поочередное выполнение файлов и ничего больше кроме этого.

    Дэфис с буквой это команда (ключ) компилятора.
    Если любой пакетный "инструмент" (компилятор, ассемблер, линкер) запустить с со специальным ключом, типа "-?" (могут быть разные) то сам компилятор (ассемблер, линкер) выдает распечатку свих команд в текстовом режиме.

    У них у всех свой формат входных и выходных данных, которые описываются при вызове - это даже в самых самых виндовых продуктах внутри всеравно так работает.
    На пример, для линкера XLINK первый параметр путь и имя файла в формате соотв. результатм работы ассемблера .r03 (c:\c8051\work\dolly6.r03)
    Путь -f c:\c8051\xcl\lnk8051.xcl указывает на файл с раширением .xcl в котором лежат инструкции для линкера.

    Путь -o c:\c8051\work\dolly8.hex это путь куда будет положен результат работы, этот формат понимает программатор и этот файл может быть загружен в МК.


    Содержание файла "lnk8051.xcl":
    __________________________________________________ ___________

    -! -LNK8051.XCL-

    Командный файл для XLINK 4.2x для использования с
    компилятором Си 8051 V4.xx. Модель памяти может
    быть -mt, -ms, -mc, -mm или -ml.
    Запуск: XLINK <об'ектный файл(ы)> -f lnk8051
    Первое: укажем ЦПУ -!

    -c8051

    -! Выбор банка рабочих регистров [0,8,10 or 18] -!

    -D_R=0

    -! Разместить сегменты "bit" (всегда с нуля, если не нужно резервировать
    битовую память для других целей) -!

    -Z(BIT)C_ARGB,BITVARS=0

    -! Разместить сегменты "data". Начальный адрес не должен быть
    меньше, чем _R+8 (адрес используемого банка рабочих регистров + 8).
    Следует также оставить место, если используются функции interrupt
    с атрибутом "using". Например, если _R=0 и определена функция-
    прерывание "using [1]", то начальный адрес должен быть 10h. -!

    -Z(DATA)C_ARGD,D_UDATA,D_IDATA=8

    -! Разместить сегменты "idata" (обычно загружаются после "data") -!

    -Z(IDATA)C_ARGI,I_UDATA,I_IDATA,CSTACK


    -! Разместить сегменты "xdata" на начальный адрес внешнего ОЗУ данных.
    Это об'явление не является ошибочным, даже если применена модель
    памяти, не использующая внешнее ОЗУ данных. -!

    -Z(XDATA)C_ARGX,X_UDATA,X_IDATA,ECSTR,RF_XDATA=0

    -! Разместить все сегменты, находящиеся в ПЗУ памяти программ (обычно с 0) -!

    -Z(CODE)INTVEC,RCODE,D_CDATA,I_CDATA,X_CDATA,C_ICAL L,C_RECFN,CSTR,CCSTR,CODE,CONST=0


    -! Выбор форматизатора для функций printf/sprintf (см. приложение к
    описанию компилятора Си -!

    -e_small_write=_formatted_write

    -! Выбор форматизатора для функций scanf/sscanf (см. приложение к
    описанию компилятора Си -!

    -e_medium_read=_formatted_read

    -! Загрузить библиотеку, соответствующую использовавшейся при
    компиляции модели памяти -!

    C:\C8051\OBJ\CL8051L -! or cl8051s, cl8051c, cl8051m, cl8051t -!

    -! Опция включения отладочной информации в выходной файл -!
    -FMPDS-I

    __________________________________________________ ______________________

    Все эти настройки можно задавть в IDE с использованием "красивых кнопеней" - но результатом работы IDE всеравно будет этот файл. Потому как линкеру "начихать" - какого у вас цвета кнопки. Линкеру подавай в нужном фомате все данные.
    Последний раз редактировалось Friendly; 30.03.2013 в 17:14.

  7. #7
    Junior user Аватар для Friendly
    Регистрация
    26.04.2012
    Сообщений
    577
    Если внимательно посмотреть в файле конфигурации C Free 5, то там просто ключи вставляются вместо понятных человеку строк в нужных местах IDE.

    <CompilerOptions>
    <Category name="Memory model">
    <Option value="-mt" desc="Select memory model: tiny [-mt]"/>
    <Option value="-ms" desc="Select memory model: small [-ms]"/>
    <Option value="-mc" desc="Select memory model: compact [-mc]"/>
    <Option value="-mm" desc="Select memory model: medium [-mm]"/>
    <Option value="-ml" desc="Select memory model: large [-ml]"/>
    <Option value="-mb" desc="Select memory model: banked [-mb]"/>

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


    <Parameter enabled="1"> $(CompilerOptions) $(FileName) -I$(IncPaths) -a $(ExePaths)work\dolly5.S03 -l $(Paths)dolly5.lst</Parameter>

    $(ExePaths) - также подставляется IDE путь на заданную директорию, папку где хранятся экзэшники компилятора.
    $(Target) - директория куда помещается результат работы - т.е. HEX файл. $(TargetName) - имя этого файла.
    $(IncPaths) - адрес директории INC где хранятся файлы конфигурации микроконтроллеров. Когда в проекте выбираем фирму изготовитель МК, то соответственно подставляется путь на папку где лежат файлы описывающие МК этой фирмы. Когда мы выбираем определенный МК, например ADUC848, то в конец этого пути прописывается имя файла "ADUC848.H" - цепь замкнулась.
    Ну и так далее.
    Т.е. сама по себе IDE ничего не делает - просто "тасует" то что мы выбираем и вставляет в нужные места.


    Конструкция Parameter enabled="1" обозначает что эта строка применяется.
    Если Parameter enabled="0" - то строка игнорируется. Это очень удобно.
    Последний раз редактировалось Friendly; 30.03.2013 в 17:30.

  8. #8
    Junior user Аватар для Friendly
    Регистрация
    26.04.2012
    Сообщений
    577
    В закладке File обычно бывает:

    1. New Ctrl+N
    2. Open Ctrl+O
    3. Close Ctrl+F4
    5. Save Ctrl+S
    6. Save all
    7. Save as...
    8. Print Ctrl+P
    9. Print Setup...
    10. Exit

    Конечно можно их тасовать и по другому называть, но функционально это должно быть.

  9. #9
    Junior user Аватар для Friendly
    Регистрация
    26.04.2012
    Сообщений
    577
    В закладке Edit обычно бывает:

    1. Undo Ctrl+Z
    2. Cut Ctrl+X
    3. Copy Ctrl+C
    4. Paste Ctrl+V

  10. #10
    Junior user Аватар для Friendly
    Регистрация
    26.04.2012
    Сообщений
    577
    Тут лежит описание компилятора, ассемблера, линкера - на русском языке, кстати.
    http://rfcd.ru/forum/showthread.php?...FF-%CC%CA-8051

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •