|
при включении у проца обычно работает только CS0 который активен при обращении кo всему адресному пространству. обычно в системе на CS0 сидит какая нибудь флэш с загрузчиком и основной прогой. Если переносить код не нужно просто работаем из флэш. Если необходимо быстрая система начинаем конфигурить процессор (код исполняется из флэш) потом конфигурим адресные пространства (память и/или периферию)
в частности в subj это ремап. потом копируем программу из флэш в озу
например если адресное проствраство CPU
0x0000
0xFFFF
то при start up куда бы не обращались всегда будет активизироваться CS0. Потом мы хотим активизировать(ремап) внетренне ОЗУ например оно у нас будет с адреса 0x8000
пишет что то типа RAM_BASE=0x8000. И после этого при обращении к адресам 0x8000...0xFFFF будет генериться не CS0 а происходить доступ к внтуреннему ОЗУ
далее по желание копируем из флэш в озу нашу программу
memcpy(0x8000,0x2000,size)
(пользовательская программа находится в области 0x2000...0xFFFF флэш)
и, например если первая инструкция программы расположена первой пишем
goto 0x8000
и наша программа исполняется из ОЗУ
если хотим исполнять ее из флэш
пишем
goto 0x2000
E-mail: info@telesys.ru