Jump to content

    

STM8S003, косяк в документации или...?

Приветствую.

Datasheet на STM8S003, страница 45 (Table 15. STM8S003F3 alternate function remapping bits for 20-pin devices): https://www.st.com/resource/en/datasheet/DM00024550.pdf

Внизу таблицы написано:

Цитата

1. Refer to the pinout description.

2. Do not use more than one remapping option in the same port. It is forbidden to enable both AFR1 and AFR0.

Перевожу вторую строку: не используйте более чем одну опций переопределения для одного и того же порта. Запрещается включать одновременно биты AFR1 и AFR2.

Собственно, с чего бы это? Первая часть предложения противоречит второй - ведь порты A, D (AFR1) не пересекаются с портом C (AFR0).

Как это понимать тогда?

Скрин части таблицы:

image.png.58d2a95beca8c8b8e503d23932fbae07.png

Share this post


Link to post
Share on other sites
21 hours ago, Arlleex said:

не используйте более чем одну опций переопределения для одного и того же порта. Запрещается включать одновременно биты AFR1 и AFR2.

Собственно, с чего бы это? Первая часть предложения противоречит второй - ведь порты A, D (AFR1) не пересекаются с портом C (AFR0).

Если переводить более точно, то там сказано AFR0 и AFR1 ;-)

По Вашей логике, требование "не включайте несколько ремапов для одного порта" должно касаться AFR0, AFR3, AFR7.

И подобное требование вроде бы отсутствует в даташитах на другие камни, хотя организация ремапа там такая же. Я, во всяком случае, не нашёл.

 

В общем, кажется мне, это косяк с копипастой (неизвестно откуда). :-)

Share this post


Link to post
Share on other sites
Только что, esaulenka сказал:

Если переводить более точно, то там сказано AFR0 и AFR1 ;-)

Да да, тут я уже впопыхах опечатался:smile:

 

Только что, esaulenka сказал:

И подобное требование вроде бы отсутствует в даташитах на другие камни, хотя организация ремапа там такая же. Я, во всяком случае, не нашёл.

В общем, кажется мне, это косяк с копипастой (неизвестно откуда).

Ну я вот глядел на STM8S207 (или какие-то другие более старшие серии, нежели STM8S003, в общем) - там при наложении портов будет иметь приоритет бит в AFR, положение которого ближе к LSB.

Вот я и подумал, а что, если я возьму, и включу AFR0 и AFR1:to_become_senile:

Собственно, тоже думаю, что копипаста... На всякий случай задал вопрос в поддержку STMicroelectronics, ради успокоения души.

Share this post


Link to post
Share on other sites

Плодить темы не хочу, отпишусь тут. Чем больше читаю Programming Manual, Datasheet, Reference Manual, тем больше понимаю, что авторы явно что-то путают, недоговаривают, опускают важные детали и особенности, которые могут сыграть злую шутку при разработке (на ассемблере).

В общем, в руководстве по программированию CPU, на странице 19 написано:

Цитата

Memory interface architecture
    The STM8 uses a Harvard architecture, with separate program and data memory buses. However, the logical address space is unified, all memories sharing the same 16-Mbytes space, non-overlapped. The memory interfaces are shown in Figure 4. It consists of two buses: address, data, read/write control signal (R/W) and memory acknowledge signal (STALL).
    The STALL acknowledge signal makes the CPU compatible with slow serial or parallel memory interfaces. When the memory interface is slow the CPU waits the memory acknowledge before executing the instruction. So in such a case, the instruction CPU cycle time is prolonged compare to the value given in this manual.
    The program memory bus is 32-bit wide, allowing the fetch of most of the instructions in one cycle. 
    As the address space is unified, the architecture allows data to be stored also in the Flash memory and program to be fetched also from RAM (data bus). In this later case the performance is impacted, besides the fact that data and fetch operation share the same bus, the instructions will be fetched one byte at a time, thus taking longer (1 cycle /byte).

 

И вот картинка этой шинной архитектуры:

renditionDownload?rendition=THUMB720BY48

 

Во всех местах, где не лень, в документации пишут, что адресное пространство данных 16Мбайт. Я, может быть, и поверю, только почему на рисунке 4 результирующая шина адреса к области данных идет 16-битная? Как 16 бит адресовать 16 мегабайт могут? И вот в документации куча нестыковок, хочется забросить это дромыхло уже:shout:

Share this post


Link to post
Share on other sites
28 minutes ago, Arlleex said:

Как 16 бит адресовать 16 мегабайт могут?

Наверное, не все эти мегабайты - в ОЗУ? :-)

RAM - начиная с нуля и до 64к, флеш и прочие SFR - могут быть дальше.

По факту, у младших камней они также укладываются в 64 к, но ядро, в теории, умеет работать и с бОльшими объемами памяти.

Share this post


Link to post
Share on other sites

А я вижу на рисунке 16MB шину. :blum:

Share this post


Link to post
Share on other sites
Только что, esaulenka сказал:

Наверное, не все эти мегабайты - в ОЗУ? :-)

RAM - начиная с нуля и до 64к, флеш и прочие SFR - могут быть дальше.

По факту, у младших камней они также укладываются в 64 к, но ядро, в теории, умеет работать и с бОльшими объемами памяти.

Дык самое интересное - утверждается, что область данных тоже 16 мегабайт. Про размещение ОЗУ в конкретной реализации понятно - она (как и вся регистровая модель, Flash, EEPROM и т.д.) сейчас лежит в нулевой секции и, по факту, инструкции с трехбайтной адресацией не нужно использовать. Но просто если я (допустим, как производитель МК) посчитал нужным разместить ОЗУ в конце 16 мегабайтного участка, то столкнулся бы с откровенной ложью товарищей из ST? Ведь область данных - это область данных, и вся она подразумевает возможность подключения RAM к любому участку этой области, как я понимаю. А 16-битная выходная шина адреса области данных как бы намекает, что хотелки нужно бы обрезать:mega_shok: Печальненько...

 

Только что, ViKo сказал:

А я вижу на рисунке 16MB шину. :blum:

Где? К Flash - понятно - все честные 24 бита. К ОЗУ выходная шина адреса имеет 16-битную глубину.

Share this post


Link to post
Share on other sites
1 минуту назад, Arlleex сказал:

Дык самое интересное - утверждается, что область данных тоже 16 мегабайт.

То, что вы подчеркнули на рисунке - не относится к ОЗУ. Унифицированное пространство для всего, в том числе флэш, ОЗУ, периферии, системных регистров...

Share this post


Link to post
Share on other sites

Хотя, я тут подумал...

Данные из руководства по программированию не будут противоречить только в следующем случае.

Производитель дает свободу выбора положения начала участка в 64 килобайт для размещения ОЗУ, которое может быть вплоть до 16 мегабайт.

Но аппаратно выводится 16-битная адресная шина для этого участка, поэтому адресоваться могут только 64 килобайт произвольного, но заданного производителем диапазона.

Накидал картинку, как я это вижу. Пишите, согласны, или нет - самому интересно:biggrin:

Итак, допустим, адресное пространство команд, как и обещал производитель, 16 мегабайт. Оно слева на картинке. Допустим (самый тупой случай, но он отражает возможность любого положения ОЗУ), Flash начинается до адреса 0x110000, идет себе, идет, и тут вклинивается ОЗУ - по адресам 0x110000-0x11FFFF размещается 64 килобайт пространства ОЗУ, и физически она адресуется по адресам 0x0-0xFFFF 16-битной шиной. Просто контроллер, обращаясь к ОЗУ, будет реально обращаться к адресу со смещением 0x110000.

А при доступе к Flash, контроллер адресов всего лишь внесет поправку при доступе к ячейкам, превышающих адрес 0x110000 на объем области для ОЗУ. То есть, если мы хотим адресовать Flash по адресу 0x110001, то физически контроллер сформирует на 24-битной шине к Flash адрес 0x120001.

Лишь в этом случае документация не противоречит сама себе и своим картинкам. Подтверждается это тем, что документация гарантирует наличие Гарвардской архитектуры с ненакладываемыми диапазонами адресов в едином адресном пространстве:

Цитата

    The STM8 uses a Harvard architecture, with separate program and data memory buses. However, the logical address space is unified, all memories sharing the same 16-Mbytes space, non-overlapped.

 

sdf.GIF

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this