Нашел тут недавно mc68030 на али...
Moderator: Shaos
-
- Writer
- Posts: 13
- Joined: 20 Jul 2023 15:10
Нашел тут недавно mc68030 на али...
Нашел тут недавно mc68030 на али
Думаю, хорошее дело собрать на нем какую-нибудь несложную отладочную плату
Думаю, хорошее дело собрать на нем какую-нибудь несложную отладочную плату
You do not have the required permissions to view the files attached to this post.
-
- Writer
- Posts: 13
- Joined: 20 Jul 2023 15:10
Re: MC68000
Вообще познакомился с этим процессором где-то полгода назад, читал данный топик. Наткнулся на пост уважаемого lvd о том, что мол "68020 и 68030 отличаются немного, разве что у 68030 есть датакеш".. А мне всегда было интересно, как работает кеш у процессора. Вот и стал читать доки на 68030. Оказалось, правда, что у 68020 кеш тоже есть, но только кеш инструкций
А сейчас натыкаюсь на предложение купить данный проц
Сейчас в 2024 достать такую древность весьма непросто
Думаю, надо решать свои проблемы сходу, а именно начать с осваивания и установки кросс-компилятора Си, ибо на асме вообще не вариаент прогать что-то большое. А потом можно и на отладочную плату замахнуться, чисто чтобы "пощупать" работу сложного проца. До этого только с 8085 вазякался, а он примитивен, как сибирский валенок. А у этого хотя бы кеш есть и MMU встроенное
А сейчас натыкаюсь на предложение купить данный проц
Сейчас в 2024 достать такую древность весьма непросто
Думаю, надо решать свои проблемы сходу, а именно начать с осваивания и установки кросс-компилятора Си, ибо на асме вообще не вариаент прогать что-то большое. А потом можно и на отладочную плату замахнуться, чисто чтобы "пощупать" работу сложного проца. До этого только с 8085 вазякался, а он примитивен, как сибирский валенок. А у этого хотя бы кеш есть и MMU встроенное
-
- Writer
- Posts: 13
- Joined: 20 Jul 2023 15:10
Re: MC68000
На досуге покопался в документации на компиляторы gcc. Установил на комп gcc-шные компиляторы c и c++ под m68k. Тестовый код оно закомпилило, интересно посмотреть в ассемблерный файл и файл hex..
Вот, что наассемблилось:
Любопытно, конечно, компилятор что-то налепил каких-то сдвигов (LSL.L)
Не изучал еще язык ассемблера m68k, но уже сталкивался с riscv. Там нет как таковой операции непосредственной загрузки в регистр, поэтому каждый раз при загрузке константы компилятор/ассемблер идут окольными путями, извращаются. Могу предположить, что тут так же
Сейчас необходимо разобраться, как правильно сказать линковщику, 1)с какого адреса запускаться будет наша программа 2)где размещать кучу и стек (где оператива?)
Работал некогда с AVR, так там проблем нет. Известно, сколько памяти у конкретного МК плюс архитектура Гарварда и тут уже все заранее предрешено, область ОЗУ есть и она неизменяема. А тут архитектура фон-Неймана, тут все несколько сложнее, потому что концепция более гибкая, и только пользователь решает, где будет ОЗУ и сколько
Продолжаю работу
Code: Select all
void main()
{
int a = 7;
a *= 234;
//return 0;
}
Code: Select all
#NO_APP
.file "testm.c"
.text
.align 2
.globl main
.type main, @function
main:
link.w %fp,#-4
moveq #7,%d0
move.l %d0,-4(%fp)
move.l -4(%fp),%d1
move.l %d1,%d0
lsl.l #3,%d0
sub.l %d1,%d0
lsl.l #2,%d0
add.l %d1,%d0
lsl.l #2,%d0
add.l %d1,%d0
add.l %d0,%d0
move.l %d0,-4(%fp)
nop
unlk %fp
rts
.size main, .-main
.ident "GCC: (Ubuntu 10.5.0-1ubuntu1~20.04) 10.5.0"
.section .note.GNU-stack,"",@progbits

Сейчас необходимо разобраться, как правильно сказать линковщику, 1)с какого адреса запускаться будет наша программа 2)где размещать кучу и стек (где оператива?)
Работал некогда с AVR, так там проблем нет. Известно, сколько памяти у конкретного МК плюс архитектура Гарварда и тут уже все заранее предрешено, область ОЗУ есть и она неизменяема. А тут архитектура фон-Неймана, тут все несколько сложнее, потому что концепция более гибкая, и только пользователь решает, где будет ОЗУ и сколько
Продолжаю работу
-
- Maniac
- Posts: 231
- Joined: 01 Jan 2022 04:34
- Location: USSR, Tashkent
Re: MC68000
загрузил он нормально, а вот умножил кучей сдвигов с плюсом
-
- Writer
- Posts: 13
- Joined: 20 Jul 2023 15:10
Re: MC68000
Хммм.. и правда
мнемоники умножения нету
Ну так компилятору виднее, значит

Ну так компилятору виднее, значит

-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: MC68000
Компилятор по умолчанию наверное решил, что это старый допотопный mc68000 - поди ему ключиками можно как-то сказать, чтобы задействовал инструкции mc68030?
P.S. Хотя пишут даже 68000 умел умножать за много-много тактов через микрокод:
MULS 70(1/0)+*
MULU 70(1/0)+*
P.P.S. Может int 32-битный, а умножает оно 16-битные слова? Попробуй заменить int на short в программе
P.S. Хотя пишут даже 68000 умел умножать за много-много тактов через микрокод:
MULS 70(1/0)+*
MULU 70(1/0)+*
P.P.S. Может int 32-битный, а умножает оно 16-битные слова? Попробуй заменить int на short в программе
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Writer
- Posts: 13
- Joined: 20 Jul 2023 15:10
Re: MC68000
Нет-нет, компилер самой последней версии + в строку компилятора изначально вставил прямо mcpu=68030:
Компилируем без оптимизации, она нам в данном случае не нужна (наша цель -- понять, как оно работает и приспособить компилер под наше голое железо)
Если немного видоизменить входной файл, то компилер начнет использовать инструкцию MULS.L:
Вот, что получается
Code: Select all
m68k-linux-gnu-gcc-10 -mcpu=68030 -msoft-float testm.s -S testm.c
Если немного видоизменить входной файл, то компилер начнет использовать инструкцию MULS.L:
Code: Select all
void main()
{
int a = 7;
int b = 123;
a = a*b;
}
Code: Select all
#NO_APP
.file "testm.c"
.text
.align 2
.globl main
.type main, @function
main:
link.w %fp,#-8
moveq #7,%d0
move.l %d0,-4(%fp)
moveq #123,%d0
move.l %d0,-8(%fp)
move.l -4(%fp),%d0
muls.l -8(%fp),%d0
move.l %d0,-4(%fp)
nop
unlk %fp
rts
.size main, .-main
.ident "GCC: (Ubuntu 10.5.0-1ubuntu1~20.04) 10.5.0"
.section .note.GNU-stack,"",@progbits
Last edited by Barsevich on 30 Mar 2024 03:16, edited 3 times in total.
-
- Writer
- Posts: 13
- Joined: 20 Jul 2023 15:10
Re: MC68000
Да, касательно указания компилятору, где какая область памяти находится. Пока накопал следующую инфу: объектный файл разбит на несколько секций:
- секция .text -- это непосредственно машинный код
- секция .data -- это данные программы (как я понял, это что-то вроде progmem, но могу ошибаться, надо еще изучать тему)
- секция .bss -- это и есть наша "куча", область для статических переменных
- секция .stack -- это область стека
Изначально этим секциям присвоены какие-то неочевидные адреса. (например, для .text начальный адрес -- 0x8000032C). Слева на этом дампе можно видеть адреса. Если преобразовывать -o в -hex, то там те же адреса программ остаются
Когда мы преобразуем .o файл в гексовый с помощью objcopy, можно изменить дефолтные адреса секций ключом --change-section-address.
- с .text все понятно -- в конечном гексовом файле видно, как изменяются адреса кода
- с .bss в теории понятно -- устанавливаем адрес начала "кучи"
- co .stack в теории тоже понятно
- а вот что касается .data, мне пока не очень понятно, какой адрес ему выдавать, .data должно быть в той же области памяти, что и .text
Короче надо копать дальше
А лучше, найти какую-то книгу, в которой это все было бы расписано подробно
- секция .text -- это непосредственно машинный код
- секция .data -- это данные программы (как я понял, это что-то вроде progmem, но могу ошибаться, надо еще изучать тему)
- секция .bss -- это и есть наша "куча", область для статических переменных
- секция .stack -- это область стека
Изначально этим секциям присвоены какие-то неочевидные адреса. (например, для .text начальный адрес -- 0x8000032C). Слева на этом дампе можно видеть адреса. Если преобразовывать -o в -hex, то там те же адреса программ остаются
Code: Select all
m68k-linux-gnu-objdump -s -j .text testm.o
testm.o: file format elf32-m68k
Contents of section .text:
8000032c 4e754e71 9dce201f 204f4857 48514879 NuNq.. . OHWHQHy
8000033c 80000460 48798000 04104850 2f004879 ...`Hy....HP/.Hy
8000034c 8000032c 61ffffff ffc64afc 203c8000 ...,a.....J. <..
8000035c 40280c80 80004028 671441f9 00000000 @(....@(g.A.....
8000036c 4a88670a 48798000 40284e90 588f4e75 J.g.Hy..@(N.X.Nu
8000037c 203c8000 40280480 80004028 2200e481 <..@(....@("...
8000038c d0809180 4480d081 e2806716 41f90000 ....D.....g.A...
8000039c 00004a88 670c2f00 48798000 40284e90 ..J.g./.Hy..@(N.
800003ac 508f4e75 2f0a2f02 4a398000 40286644 P.Nu/./.J9..@(fD
800003bc 243c8000 3f2c0482 80003f28 e4825382 $<..?,....?(..S.
800003cc 45f98000 3f282039 8000402a b4806318 E...?( 9..@*..c.
800003dc 528023c0 8000402a 20720c00 4e902039 R.#...@* r..N. 9
800003ec 8000402a b48062e8 4ebaff62 13fc0001 ..@*..b.N..b....
800003fc 80004028 241f245f 4e754e75 6000ff72 ..@($.$_NuNu`..r
8000040c 4e754e71 48e73e24 4bfb0170 00003bea NuNqH.>$K..p..;.
8000041c 282f0020 2a2f0024 2c2f0028 61ffffff (/. */.$,/.(a...
8000042c fe922475 01700000 00182635 01700000 ..$u.p....&5.p..
8000043c 001c968a e4836716 4282205a 2f062f05 ......g.B. Z/./.
8000044c 2f044e90 52824fef 000cb483 66ec4cdf /.N.R.O.....f.L.
8000045c 247c4e75 4e754e71 2f0a2079 80003f20 $|NuNuNq/. y..?
8000046c 70ffb088 671045f9 80003f20 4e902062 p...g.E...? N. b
8000047c 70ffb088 66f6245f 4e754e75 p...f.$_NuNu
- с .text все понятно -- в конечном гексовом файле видно, как изменяются адреса кода
- с .bss в теории понятно -- устанавливаем адрес начала "кучи"
- co .stack в теории тоже понятно
- а вот что касается .data, мне пока не очень понятно, какой адрес ему выдавать, .data должно быть в той же области памяти, что и .text
Короче надо копать дальше
А лучше, найти какую-то книгу, в которой это все было бы расписано подробно
-
- Maniac
- Posts: 231
- Joined: 01 Jan 2022 04:34
- Location: USSR, Tashkent
Re: MC68000
data это глобальные переменные или инициализированные
text - или пзу или озу как хошь
data - сначала озу или конец проги
bss - после даты
stack - конец озу
text - или пзу или озу как хошь
data - сначала озу или конец проги
bss - после даты
stack - конец озу
-
- Writer
- Posts: 13
- Joined: 20 Jul 2023 15:10
Re: MC68000
Приехали сегодня, красавцы
На фото для сравнения с 1801ВМ3, тоже желанной штучкой)
Надо бы двигаться в сторону стенда для испытаний микропроцессора.
На фото для сравнения с 1801ВМ3, тоже желанной штучкой)
Надо бы двигаться в сторону стенда для испытаний микропроцессора.
You do not have the required permissions to view the files attached to this post.
-
- Doomed
- Posts: 478
- Joined: 25 Aug 2009 07:02
- Location: Москва
Re: MC68000
ВМ3 из другого зверинца, хотя бы и 68k была придумана с оглядкой на PDP-11.Barsevich wrote:На фото для сравнения с 1801ВМ3, тоже желанной штучкой)
Надо бы двигаться в сторону стенда для испытаний микропроцессора.
Вот этот родственник на его месте более естественно смотрелся бы, он из дедов прямой ветви. И стенд, да, вещь полезная и хорошая сама по себе, факт проверенный.
You do not have the required permissions to view the files attached to this post.
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: MC68000
Может создать подфорум про M68K внутри MCU/MPU?
И перекидать туда немногочисленные сообщения про Амигу и Пальм...
P.S. В итоге 1 июля 2024 года сделал полноценный новый форум: viewforum.php?f=118
И перекидать туда немногочисленные сообщения про Амигу и Пальм...
P.S. В итоге 1 июля 2024 года сделал полноценный новый форум: viewforum.php?f=118
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Writer
- Posts: 13
- Joined: 20 Jul 2023 15:10
Re: MC68000
Давай, кэп, хорошее дело)
-
- Writer
- Posts: 13
- Joined: 20 Jul 2023 15:10
Re: MC68000
Долго я ничего не постил -- дел своих было много.
На днях решил еще покопать тему компиляции для m68k. Позавчера написал свой первый makefile, вчера начал копать ld-скрипты...
На текущий момент удалось уже в дизассемблернике получить что-то походящее на правду, прошивка хранится по указанным адресам ПЗУ, переменные хранятся по указанным адресам ОЗУ. Но теперь нужно изучить язык ассемблера m68k, чтобы лучше понимать, что творится в точке входа в программу.
Задача: собрать комп на mc68030 (или по крайней мере стенд)
Но я не хочу опять все окружение писать на языке ассемблера (раньше занимался 8085, под компьютеры на его основе писал ось)
Также в теории на mc68030 можно запустить линукс, интересно, как это сделать, будем потихонечку разбираться.
На днях решил еще покопать тему компиляции для m68k. Позавчера написал свой первый makefile, вчера начал копать ld-скрипты...
На текущий момент удалось уже в дизассемблернике получить что-то походящее на правду, прошивка хранится по указанным адресам ПЗУ, переменные хранятся по указанным адресам ОЗУ. Но теперь нужно изучить язык ассемблера m68k, чтобы лучше понимать, что творится в точке входа в программу.
Задача: собрать комп на mc68030 (или по крайней мере стенд)
Но я не хочу опять все окружение писать на языке ассемблера (раньше занимался 8085, под компьютеры на его основе писал ось)
Также в теории на mc68030 можно запустить линукс, интересно, как это сделать, будем потихонечку разбираться.
You do not have the required permissions to view the files attached to this post.
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: MC68000
Про комп на mc68030 наверное надо будет отрезать в отельный топик
Я тут за главного - если что шлите мыло на me собака shaos точка net