Więc jest taki problem:
Mam dwie pamięci programu nazwijmy ją dla rozróżnienia pamięć górna i pamięć dolna.
W pamięci górnej będą gotowe procedury taki sobie biosik natomiast dolna będzie ładowana przez RS'a.
I teraz pytanie:
Jak zrobić to w C aby nie trzeba było za każdym razem kompilować całego programu dla górnej i dolnej pamięci, a tylko sobie wywołwać z poziomu pamięci dolnej procedurki które zawarte są w górnej pamięci.
Dodam że kompiluję w SDCC i coś mi się nie udaje zrobić tablicy wskaźników do funkcji z parametrami. Może ktoś ma jakiś pomysł?
A dziękuję już sobie poradziłem kwestia semantyki
Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięJak zaprogramować uC ?
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
Zakladam, ze korzystasz z pamieci Flash. One "z definicji" sa podzielone na sektory, ktore sa programowane niezaleznie. Czyli musisz zrobic tak, ze w jednym z sektorow lokujesz BIOS, w pozostalych wymienany program. Nie wymaga to zadnych sztuczek, poza umiejscowieniem programou wymiennanego pod adresem z odpowiednim offsetem.
Jezeli zalezy Ci na bezpieczenstwie BIOSu, to skorzystaj z pamieci Flash z CFI (opis w EP1/2006), w ktorych przewidziane specjalne sektory "boot" z osobnymi zabezpieczeniami przed modyfikacja.
Pzdr
PZb
Jezeli zalezy Ci na bezpieczenstwie BIOSu, to skorzystaj z pamieci Flash z CFI (opis w EP1/2006), w ktorych przewidziane specjalne sektory "boot" z osobnymi zabezpieczeniami przed modyfikacja.
Pzdr
PZb
Tak, tak jedna z tych pamięci (dolna) to Flash a druga to zwykły EPROM. Obie są dostępne w jednej przestrzeni adresowej. A jako że 8051 nie ma przerwania programowego pod którym można by umieścić procedury umieszczone w Biosie tak więc będę zmuszony stworzyć tablicę funkcji dostępnych w biosie systemu (pamięć górna) i umożliwić korzystanie z niej dla programisty z poziomu pamięci dolnej bez zagłebiania go w szczegóły implementacji poszczególnych funkcji w biosie. Tak więc programista piszący program będzie mógł korzystać z funkcji dostępnych w biosie i jego program będzie ładowany poprzez RS do flash'a.
I właśnie tutaj jest a raczej był pewien problem ponieważ aby "dolny" program miał dostęp do funkcji z górnej pamięci musi wiedzić gdzie taka procedurka siedzi w tejże pamięci. Problem ten został rozwiązany przez stworzenie w pamięci bios pod znanym adresem tablicy wskaźników do funkcji znajdujących się w biosie. Tablica ta jest uaktualniana podczas pisania biosu a właściwie jego kompilacji. Następnie do programu ładowanego do dolnej pamięci dołączam plik nagłówkowy zawierający adres tej tablicy oraz rzutuję na odpowiednie definicje funkcji adresy z tejże tablicy i już mogę się posługiwać odwołaniami do funkcji z biosu.
Mam nadzieję że jasno to wyraziłem
I właśnie tutaj jest a raczej był pewien problem ponieważ aby "dolny" program miał dostęp do funkcji z górnej pamięci musi wiedzić gdzie taka procedurka siedzi w tejże pamięci. Problem ten został rozwiązany przez stworzenie w pamięci bios pod znanym adresem tablicy wskaźników do funkcji znajdujących się w biosie. Tablica ta jest uaktualniana podczas pisania biosu a właściwie jego kompilacji. Następnie do programu ładowanego do dolnej pamięci dołączam plik nagłówkowy zawierający adres tej tablicy oraz rzutuję na odpowiednie definicje funkcji adresy z tejże tablicy i już mogę się posługiwać odwołaniami do funkcji z biosu.
Mam nadzieję że jasno to wyraziłem
Rozumiem co robisz i - mam nadzieje - takze w jaki sposob ;-). Polecam Ci sprobowanie zastapienia kmbinowanej pamieci Flash/EEPROM jednym ukladem, stworzonym specjalnie do takich aplikacji, np. ST29MW320DB/DT (z bootloaderem u dolu/u gory). Sa dostepne takze mniejsze i wieksze takie pamieci, dostepne sa takze warianty o roznym podziale na sektory. Takie pamieci sa bardzo wygodne w stosowaniu, a dzieki CFI latwo zapewnic sobie (auto)wymiennosc ich typow.
Jedna sztuke na probe moge Ci sprezentowac (adres poprosze na priva).
Pzdr
PZb
Jedna sztuke na probe moge Ci sprezentowac (adres poprosze na priva).
Pzdr
PZb
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 86 gości