Это нужно доку на компилятор курить. Смотреть как размещать данные по конкретному адресу.uldemir писал(а):Или хотя бы, чтобы при прошивке там записывались бы какие-то начальные установки.
Вопросы по С/С++ (СИ)
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
А запустить отладку без перепрошивки никак ?
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Проще, наверное, при прошивке не стирать всю Flash-память, а только те страницы, в которые ложится прошивка
Re: Вопросы по С/С++ (СИ)
мм. не знаю. среда CodeComposerStudio. Может, вы с ним работали и можете подсказать как?
Проблема не в том, что при отладке флэш сносится. А то что при перепрошивке. Кажется, проще будет задействовать еще один EUSCI и на неё навесить какой SPI EEPROM. Не хочется в этот CCS особо вникать.
Добавлено after 4 minutes 30 seconds:
Shit. как всё просто оказалось. Когда делал 10 лабу (там как раз в верхнюю память надо было писать лог работы), вроде бы там данные не пропадали. А в моём проекте пропадают. Оказывается настройки проекта немного разные. Нашел галочку "Erase and download necessary segments only"
Проблема не в том, что при отладке флэш сносится. А то что при перепрошивке. Кажется, проще будет задействовать еще один EUSCI и на неё навесить какой SPI EEPROM. Не хочется в этот CCS особо вникать.
Добавлено after 4 minutes 30 seconds:
Shit. как всё просто оказалось. Когда делал 10 лабу (там как раз в верхнюю память надо было писать лог работы), вроде бы там данные не пропадали. А в моём проекте пропадают. Оказывается настройки проекта немного разные. Нашел галочку "Erase and download necessary segments only"
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Собственно, о чём и говорилось.
-
Пока_без_кота
- Потрогал лапой паяльник
- Сообщения: 359
- Зарегистрирован: Чт авг 08, 2013 01:06:54
Re: Вопросы по С/С++ (СИ)
Доброго времени суток. Проект состоит из нескольких файлов. В одной из файлов есть функция:
Ее прототип находиться в хидере, и заинклужен в другом файле.
Функция одним из параметров принимает pointer, на массив uint8_t , берет из него len елементов, и сует в буфер по указателю buf.
Вопрос: как имея указатель на массив uint8_t из другого файла проекта, получить длинну этого массива ВНУТРИ этой функции ?
Если беру sizeof массива, находясь в его файле, получаю конечно его размер, а если беру sizeof аргумента функции, получаю ясен пень размер 1 элемента uint8_t
Код: Выделить всё
buf_push_array(uint8_t* pointer, uint8_t len, uint8_t* buf)
Функция одним из параметров принимает pointer, на массив uint8_t , берет из него len елементов, и сует в буфер по указателю buf.
Вопрос: как имея указатель на массив uint8_t из другого файла проекта, получить длинну этого массива ВНУТРИ этой функции ?
Если беру sizeof массива, находясь в его файле, получаю конечно его размер, а если беру sizeof аргумента функции, получаю ясен пень размер 1 элемента uint8_t
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Никак. Указатель не несёт с собой никаких данных, только адрес.
-
Пока_без_кота
- Потрогал лапой паяльник
- Сообщения: 359
- Зарегистрирован: Чт авг 08, 2013 01:06:54
Re: Вопросы по С/С++ (СИ)
[uquote="Аlex",url="/forum/viewtopic.php?p=3572354#p3572354"]Никак...[/uquote]
Боль
Боль
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
А что мешает передавать размер массива через len? Он же вроде для того туда и поставлен - сказать, сколько байтов надо копировать.
Кстати, функция эта - почти стандартный memcpy, только аргументы по-другому расположены.
Кстати, функция эта - почти стандартный memcpy, только аргументы по-другому расположены.
-
Пока_без_кота
- Потрогал лапой паяльник
- Сообщения: 359
- Зарегистрирован: Чт авг 08, 2013 01:06:54
Re: Вопросы по С/С++ (СИ)
[uquote="WiseLord",url="/forum/viewtopic.php?p=3572368#p3572368"]А что мешает передавать размер массива через len? ...[/uquote]
Я хочу, чтобы можно было копировать произвольное количество данных, а не весь массив. А дополнительно, знать размер массива хотел, чтобы сделать контроль (защиту от дурака) того, что пользователь функции не запросил данных больше, чем есть в массиве.
Я хочу, чтобы можно было копировать произвольное количество данных, а не весь массив. А дополнительно, знать размер массива хотел, чтобы сделать контроль (защиту от дурака) того, что пользователь функции не запросил данных больше, чем есть в массиве.
- da-nie
- Говорящий с текстолитом
- Сообщения: 1590
- Зарегистрирован: Вс июн 24, 2012 16:07:00
- Откуда: Лен.Обл.
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Перейти на stl и передать вместо массива ссылку на объект типа vector или array. А от них уже брать размер.Вопрос: как имея указатель на массив uint8_t из другого файла проекта, получить длинну этого массива ВНУТРИ этой функции ?
И день и ночь в пути...
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
-
Пока_без_кота
- Потрогал лапой паяльник
- Сообщения: 359
- Зарегистрирован: Чт авг 08, 2013 01:06:54
Re: Вопросы по С/С++ (СИ)
Есть проект из 2 исходных файлов + 1 свой хидер. В обоих исходных файлах необходимо включение своего хидера. В одном из исходных файлов необходимо включение stdio.h + stdint.h, а в другом только stdio.h. Как сделать правильно: включить stdio.h + stdint.h в свой хидер, и подключить к обоим исходным файлам, или не включать их в свой хидер, и подключить в каждом исходнике только необходимые ему хидеры ?
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
формально правила хорошего тона требуют включать в исходник модуля только те хидеры, что необходимы для компиляции этого модуля.
а не формально - без разницы
а не формально - без разницы
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
-
Пока_без_кота
- Потрогал лапой паяльник
- Сообщения: 359
- Зарегистрирован: Чт авг 08, 2013 01:06:54
Re: Вопросы по С/С++ (СИ)
[uquote="ARV",url="/forum/viewtopic.php?p=3573163#p3573163"]формально ... не формально ...[/uquote]
А как поступаете в таких случаях Вы
?
А как поступаете в таких случаях Вы
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Вопросы по С/С++ (СИ)
[uquote="Пока_без_кота",url="/forum/viewtopic.php?p=3573178#p3573178"]А как поступаете в таких случаях Вы
?[/uquote]Код должен быть написан так, чтобы включение "лишнего" заголовочного файла ни на что не влияло.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
начинаю я всегда именно так, как вам и посоветовал, т.е. "правильно". но по мере роста количества модулей растет и колчество связей между ними, и часто в конечном итоге получается "как всегда": в исходнике список на полторы страницы из подключаемых заголовков...Пока_без_кота писал(а):А как поступаете в таких случаях Вы
периодически делаю "рефакторинг"...
это правильно сказано. если заключать тело любого заголовочника в "дефайны безопасности", как рекомендуется, то хоть в 250 местах приинклюживай - ничего страшного не произойдет. но в конечном итоге это способствует именно тому бардаку, к которому я и прихожу в своей деятельностиVladislavS писал(а):Код должен быть написан так, чтобы включение "лишнего" заголовочного файла ни на что не влияло
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
-
Пока_без_кота
- Потрогал лапой паяльник
- Сообщения: 359
- Зарегистрирован: Чт авг 08, 2013 01:06:54
Re: Вопросы по С/С++ (СИ)
VladislavS, ARV - благодарю.
Re: Вопросы по С/С++ (СИ)
[uquote="ARV",url="/forum/viewtopic.php?p=3573233#p3573233"]по мере роста количества модулей растет и колчество связей между ними, и часто в конечном итоге получается "как всегда": в исходнике список на полторы страницы из подключаемых заголовков[/uquote]по-хорошему надо при таком положении дел сооружать эдакие "макромодули", хоть как-то группирующие мелкие и светящие наружу своими интерфейсами. Но всегда лень, да 
Re: Вопросы по С/С++ (СИ)
Только не хидеры, а хедеры. А то как то уж совсем неприлично.)
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Вопросы по С/С++ (СИ)
Скажите пожалуйста, правильно ли я понимаю массивы в Си
Есть у меня потребность в создании двумерного массива, пусть
unsigned long int button [4][4];
Здесь более или менее понятно, что создается массив в памяти, который для простоты понимания является двумерным, у которого 4 строки и 4 столбца. Т.е. 16 ячеек, которые по 32 бита, или 16 слов, 16 элементов.
Теперь мне надо обратиться к первому элементу массива, я должен написать
button [0][0] = 132;
Т.е. Первый элемент считается от нуля, а строки при объявлении массива считаются от 1? И тогда последний элемент массива будет у меня
button [3][3] ???
Есть у меня потребность в создании двумерного массива, пусть
unsigned long int button [4][4];
Здесь более или менее понятно, что создается массив в памяти, который для простоты понимания является двумерным, у которого 4 строки и 4 столбца. Т.е. 16 ячеек, которые по 32 бита, или 16 слов, 16 элементов.
Теперь мне надо обратиться к первому элементу массива, я должен написать
button [0][0] = 132;
Т.е. Первый элемент считается от нуля, а строки при объявлении массива считаются от 1? И тогда последний элемент массива будет у меня
button [3][3] ???
Станислав
Re: Вопросы по С/С++ (СИ)
да, как всегда, при объявлении - количество элементов, а индексы от нуля.