Global variable sa naka-embed na system

B

bharaths_jois

Guest
Isaalang-alang natin ang isang naka-embed na sistema, na may software na binubuo ng mga pangkalahatang variable. Q1) Alin ang puwang na inilaan para sa pangkalahatang variable? Kung RAM, mangyaring tukuyin kung aling mga seksyon ng RAM. Q2) Ang isang lokal na variable ay nilikha at sumasakop sa memory kapag ang saklaw ng programa na kung saan ay ipinahayag ang variable ay pinaandar. Kanan:?: Katulad nito, kapag ang mga pangkalahatang variable na sumasakop sa memory? Salamat sa maaga Bumabati, Bharath
 
[Quote = bharaths_jois] natin isaalang-alang ang isang naka-embed na sistema, na may software na binubuo ng mga pangkalahatang variable. Q1) Alin ang puwang na inilaan para sa pangkalahatang variable? Kung RAM, mangyaring tukuyin kung aling mga seksyon ng RAM. [/Quote] Global variable (para sa na mahalaga sa anumang variable) ay inilalaan mula RAM. Para sa GCC tagatala uninitialized variable ay pumunta sa bss seksyon at nasimulan variable napupunta sa. Data seksyon. Pangalan Seksyon ay mag-iba ayon sa iyong tagatala. [Quote = bharaths_jois] Q2) Ang isang lokal na variable ay nilikha at sumasakop sa memory kapag ang saklaw ng programa na kung saan ay ipinahayag ang variable ay pinaandar. Kanan:?: [/Quote] Ang tama, upang maging tumpak na sila ay inilalaan stack ang. [Quote = bharaths_jois] Gayundin, kapag ang mga pangkalahatang variable na sumasakop ang memory? [/Quote] Space para sa mga pangkalahatang variable ay nakalaan sa ipunin ang oras na mismo. Habang naglo-load ang programa c startup code ay matiyak na inilaang espasyo ay nasimulan nang tama.
 
Salamat sa inyo. Paglipat magpatuloy na ito, natutunan ko na ang isang kopya ng kung ano ang kailanman ay pumunta sa RAM ay sa hex file at samakatuwid sa ROM. At ang startup code, na tumatakbo sa panahon ng pagsisimula ng application mode ng system ay kopyahin ang nilalaman ng ROM sa naaangkop na lugar ng RAM, ay sa karapatang ito?
 
Iyon ay tama, subalit para sa nasimulan mga variable ng file hex lamang na naglalaman ng impormasyon tungkol sa kung gaano karaming mga byte kailangang na inilaan sa RAM. Kaya startup code ay inilalaan ang ganoong karaming mga espasyo at punan ang area na may lahat ng mga zero. Para sa nasimulan variable hex file ay naglalaman ng nasimulan data pati na rin kasama ang laki sa kaso startup code ay kopyahin ang data na ito mula sa hex file (ROM) sa RAM.
 
Salamat muli. Paano ang paggamit ng anumang klase ng imbakan magpasya ang espasyo sa kung saan ang variable ay pumunta? Din gumagamit ng const, kung paano ito mahalaga? Kung saan ang mga variable na ito pumunta (pandaigdigan at lokal)? ie kung saan gagawin ng pandaigdigang const umupo at kung saan ay isang lokal na const umupo?
 
Constants ay palaging naka-imbak sa ROM / Flash hindi isinasaalang-alang kung ang mga ito ay lokal o global, gayunpaman tagatala ay pangangalaga ng paglilimita ng saklaw ng mga lokal na constants. Ito ay hindi posible upang talakayin ang pagpapatupad ng constants sa pangkalahatan bilang ito ay depende sa mga indibidwal na processor pamilya at mga compiler.
 
Para sa GCC complier lahat ng global at static na mga variable ay naka-imbak sa datasement. kung ang variable ang initialised pagkatapos na variable ay sa ilalim ng kategorya ng IDS (Initialised segment ng data). Kung variable ay hindi initialised pagkatapos na variable ay sa ilalim ng kategorya ng UIDS (Huwag initialised data segment).
 
Sa anumang tagatala, maaari kang makakuha ng impormasyon tungkol sa memory layout at lokasyon ng tukoy na variable, gaya ng mga file ng mapa. Bilang walang target na sistema o tagatala ay Sinabi sa orihinal na tanong, gusto kong banggitin, na maraming bagay ang sinabi sa talakayan marahil maaaring mali. E. g. para sa isang processor na may isang stack na pinaghihiwalay mula sa data espasyo (8051 o PIC), ang lokal na variable ay karaniwang hindi matatagpuan sa stack.
 

Welcome to EDABoard.com

Sponsor

Back
Top