-
- Смысл в том, что у проца шина только 8-16р. Пишет правильно. Я вижу
и в отлаччике, и на экране. А с чтением бяда. Хотя, если читать как
uint32_t, всё нормально. Не охота лезть в ассемблер risс-v, но,
походу, придёцца. - mse homjak(24.08.2024 22:00)
- В ассемблер ему лезть неохота. Как насчёт залезть осциллографом в
сигналы шины? - SciFi(24.08.2024 22:02)
- Осцыллом лез в первую очередь. Вроде, никаких проблем не было. Ну
щас ещо раз расчехлю Рыголя. - mse homjak(24.08.2024 22:08)
- Решил повременить с Рыголем и зачитал uint32_t с нечотного адреса.
Симптом аналогичен: читаются только чотные значения, что, в
общем-то и стоило ожидать. Нечотные, нулевые. Т.е. какой-то косяк
шины, получается. - mse homjak(24.08.2024 22:15)
- Правильные пацаны, когда делают шину, сначала проверяют её во всех
режимах. А не как обычно: цепи соединил, сделано, босс! :-) - SciFi(24.08.2024 22:19)
- А как её проверить во всех режимах? Пока цэпи не подсоединил,
нихрена не увидишь. По жэлезу, работает правильно. Вариант с
чтением uint16_t. mse homjak(292 знак., 24.08.2024 22:53, картинка)
- Шина же совмещённая, адрес+данные? Что за глюки на A0 после ALE?
Может, не все времянки соблюдены? - Nikolay_Po(25.08.2024 14:09)
- Да. Мультиплексированная шина A/D. Этот выброс после фронта ALE и
не мешает. - mse homjak(25.08.2024 14:30)
- В какой момент делается выборка чтения контроллером? Может, от
последнего разряда адреса немного зависит момент выборки и для
нечётных, выборка на глюк попадает? - Nikolay_Po(25.08.2024 16:55)
- Выборка происходит по фронту nRD. Но упирать на это нет смысла.
Отладчик прекрасно вычитывает ФПГА через шину. Аналогично,
обращение к uint32_t, тоже решает проблему. Т.е. или трабла
процессора, или компилятора. - mse homjak(25.08.2024 17:41)
- Забыли третий источник -- программиста. - Бapбoc(25.08.2024 20:33)
- Текст в корневом посте. Можэте критиковать. - mse homjak(25.08.2024 21:02)
- Внешняя память никак не настраивается? Ну, например, забыл включить
входной буфер на A0. И при чтении, адрес берется не установленный,
а прочитанный? Хотя тогда и нулевой бит данных бы не проходил. Nikolay_Po(90 знак., 25.08.2024 21:13)
- Адресация только словами. Шина работает, ибо это шина ТФТ контроллера. Я вижу, что происходит, просто на экране. Байтового обращения нет. Все объекты uint16_t. Нюанс только один: по нечётным адресам процэссор считывает "0х0", если доступ к uint16_t. Если адресуюсь к uint32_t то всё нормально, если данные выровнены. Если сдвинуты на 2 байта, то знакомая картина: нечётные равны "0". Хотя осцылограммы показывают корректность обмена. mse homjak(110 знак., 25.08.2024 21:31)
- Внешняя память никак не настраивается? Ну, например, забыл включить
входной буфер на A0. И при чтении, адрес берется не установленный,
а прочитанный? Хотя тогда и нулевой бит данных бы не проходил. Nikolay_Po(90 знак., 25.08.2024 21:13)
- Текст в корневом посте. Можэте критиковать. - mse homjak(25.08.2024 21:02)
- Осталось приложить ассемблер после компилятора с этого места... - Nikolay_Po(25.08.2024 20:20)
- С одной стороны, как бы, да. Но я смотрю на осциллограмму и вижу,
что с нечётных адресов считываются нечётные данные. Но можно и
ассемблер, ессно. Убрал волатильности, от них тока гемор. Круто он
оптимизировал, есличо! Попробуем добавить волатильности. mse homjak(1434 знак., 25.08.2024 21:59)
- Добавил. Ничего сверхъестественного. mse homjak(1952 знак., 25.08.2024 22:03)
- С одной стороны, как бы, да. Но я смотрю на осциллограмму и вижу,
что с нечётных адресов считываются нечётные данные. Но можно и
ассемблер, ессно. Убрал волатильности, от них тока гемор. Круто он
оптимизировал, есличо! Попробуем добавить волатильности. mse homjak(1434 знак., 25.08.2024 21:59)
- Забыли третий источник -- программиста. - Бapбoc(25.08.2024 20:33)
- Выборка происходит по фронту nRD. Но упирать на это нет смысла.
Отладчик прекрасно вычитывает ФПГА через шину. Аналогично,
обращение к uint32_t, тоже решает проблему. Т.е. или трабла
процессора, или компилятора. - mse homjak(25.08.2024 17:41)
- В какой момент делается выборка чтения контроллером? Может, от
последнего разряда адреса немного зависит момент выборки и для
нечётных, выборка на глюк попадает? - Nikolay_Po(25.08.2024 16:55)
- Да. Мультиплексированная шина A/D. Этот выброс после фронта ALE и
не мешает. - mse homjak(25.08.2024 14:30)
- Шина же совмещённая, адрес+данные? Что за глюки на A0 после ALE?
Может, не все времянки соблюдены? - Nikolay_Po(25.08.2024 14:09)
- А как её проверить во всех режимах? Пока цэпи не подсоединил,
нихрена не увидишь. По жэлезу, работает правильно. Вариант с
чтением uint16_t. mse homjak(292 знак., 24.08.2024 22:53, картинка)
- Правильные пацаны, когда делают шину, сначала проверяют её во всех
режимах. А не как обычно: цепи соединил, сделано, босс! :-) - SciFi(24.08.2024 22:19)
- Решил повременить с Рыголем и зачитал uint32_t с нечотного адреса.
Симптом аналогичен: читаются только чотные значения, что, в
общем-то и стоило ожидать. Нечотные, нулевые. Т.е. какой-то косяк
шины, получается. - mse homjak(24.08.2024 22:15)
- Осцыллом лез в первую очередь. Вроде, никаких проблем не было. Ну
щас ещо раз расчехлю Рыголя. - mse homjak(24.08.2024 22:08)
- В ассемблер ему лезть неохота. Как насчёт залезть осциллографом в
сигналы шины? - SciFi(24.08.2024 22:02)
- Смысл в том, что у проца шина только 8-16р. Пишет правильно. Я вижу
и в отлаччике, и на экране. А с чтением бяда. Хотя, если читать как
uint32_t, всё нормально. Не охота лезть в ассемблер risс-v, но,
походу, придёцца. - mse homjak(24.08.2024 22:00)