FMUSER Бесправадная перадача відэа і аўдыё лягчэй!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> афрыкаанс
sq.fmuser.org -> албанская
ar.fmuser.org -> арабская
hy.fmuser.org -> Армянскі
az.fmuser.org -> азербайджанскі
eu.fmuser.org -> баскская
be.fmuser.org -> Беларуская
bg.fmuser.org -> Балгарская
ca.fmuser.org -> каталонская
zh-CN.fmuser.org -> кітайскі (спрошчаны)
zh-TW.fmuser.org -> Кітайскі (традыцыйны)
hr.fmuser.org -> харвацкая
cs.fmuser.org -> чэшская
da.fmuser.org -> дацкая
nl.fmuser.org -> Галандская
et.fmuser.org -> эстонская
tl.fmuser.org -> філіпінская
fi.fmuser.org -> фінская
fr.fmuser.org -> Французская
gl.fmuser.org -> галісійская
ka.fmuser.org -> грузінскі
de.fmuser.org -> нямецкая
el.fmuser.org -> Грэчаскі
ht.fmuser.org -> Гаіцянскі крэол
iw.fmuser.org -> іўрыт
hi.fmuser.org -> хіндзі
hu.fmuser.org -> Венгерская
is.fmuser.org -> ісландская
id.fmuser.org -> інданезійская
ga.fmuser.org -> ірландскі
it.fmuser.org -> Італьянская
ja.fmuser.org -> японскі
ko.fmuser.org -> карэйская
lv.fmuser.org -> латышскі
lt.fmuser.org -> Літоўскі
mk.fmuser.org -> македонская
ms.fmuser.org -> малайская
mt.fmuser.org -> мальтыйская
no.fmuser.org -> Нарвежскі
fa.fmuser.org -> персідская
pl.fmuser.org -> польская
pt.fmuser.org -> партугальская
ro.fmuser.org -> Румынская
ru.fmuser.org -> руская
sr.fmuser.org -> сербская
sk.fmuser.org -> славацкая
sl.fmuser.org -> Славенская
es.fmuser.org -> іспанская
sw.fmuser.org -> суахілі
sv.fmuser.org -> шведская
th.fmuser.org -> Тайская
tr.fmuser.org -> турэцкая
uk.fmuser.org -> украінскі
ur.fmuser.org -> урду
vi.fmuser.org -> В'етнамская
cy.fmuser.org -> валійская
yi.fmuser.org -> Ідыш
Для распрацоўкі прыкладанняў: мову C, структуру дадзеных, JAVA і г.д. трэба добра вывучыць. Няма нічога асаблівага, на што варта звярнуць увагу пры распрацоўцы ўбудаваных прыкладанняў і распрацоўцы прыкладанняў на ПК. Можа быць, вы кажаце, што вам трэба аптымізаваць убудаваную сістэму, так, вам трэба аптымізаваць, але неаптымізаваная праграма нічым не адрозніваецца ад распрацоўкі праграмы на ПК. Акрамя таго, калі ў вас ёсць магчымасць аптымізацыі, вы больш не прывыклі задаваць гэтае пытанне. Для канкрэтнага прыкладу, напрыклад інтэрфейсу распрацоўкі, мы выкарыстоўваем ВК на ПК; ва ўбудаваным Linux мы можам выкарыстоўваць QT і Android. У гэты час вы павінны навучыцца праграмаванню QT і Android. Але асновай па-ранейшаму з'яўляецца C або JAVA, і на гэтай падставе азнаёмцеся з іх інтэрфейсамі. Калі вы вывучылі ВК, спатрэбіцца час, каб зразумець гэтыя класы і элементы кіравання.
Калі вы хочаце вывучыць асноўную сістэму, гэта мая спецыяльнасць, але я магу сказаць трохі.
Перш чым адказаць на гэтае пытанне, дазвольце мне адказаць: Шмат хто пытаецца ў мяне, гэта навучыцца ездзіць на машыне ці навучыцца падаваць заяўку? Я магу толькі сказаць, што гэта заснавана на працэнтах, а драйверы і прыкладанні не зусім асобныя.
1. Драйверы, пра якія мы гаворым, не абмяжоўваюцца апаратнымі аперацыямі, але і такімі паняццямі, як прынцыпы аперацыйнай сістэмы і планаванне рэжыму сну і няспання. Калі вы хочаце напісаць добрую заяўку і хочаце лепш вырашыць праблемы, з якімі сутыкаецца прыкладанне, вы павінны зразумець гэтыя веды
2. Нізкія бар'еры для прымянення, асабліва бягучы ANDROID, чысты JAVA. Я асабіста думаю, што шлях распрацоўкі прыкладанняў дасведчаны ў бізнэсе. Напрыклад, у індустрыі сувязі, індустрыі IPTV і індустрыі мабільных тэлефонаў вы разумееце патрэбы галіны. Такім чынам, людзі, якія з'яўляюцца лідэрамі, у асноўным з'яўляюцца дадаткамі.
3. Весці сябе. На самай справе я не хачу называць гэта "быць драйверам", але хачу назваць "сістэмай нізкага ўзроўню". Пасля гэтага гэта заб'е ўсе галіны. Я працаваў некалькі гадоў і займаўся мабільнымі тэлефонамі, IPTV і канферэнц-тэлебачаннем, але гэтыя прадукты не маюць для мяне ніякай розніцы, бо я займаюся толькі ніжнім пластом. Іх бізнэс са мной нічога агульнага не мае. Калі ўзнікае праблема з дадаткам, і яны не могуць яе вырашыць, я дам ім ідэю з пункту гледжання ядра і забяспечу інструментамі. Я асабіста думаю, што я тэхнічны эксперт у напрамку развіцця ніжняга пласта.
4. На самай справе, няма мяжы паміж выкананнем ніжняга пласта альбо выкананнем прыкладання. Калі ў вас ёсць досвед ніжняга пласта, вы будзеце адчуваць сябе вельмі лёгка, калі будзеце рабіць заяўку. Маючы дзелавы досвед, вы можаце даведацца пра ніжні пласт, і хутка зможаце стварыць каманду.
Вяртаемся да пытання, як вучыцца. Што ўваходзіць ва ўбудаваную сістэму Linux? Не хвалюйцеся, вы даведаецеся гэта, прыводзячы прыклад.
1. Калі кампутар уключаны, хто адлюстроўвае гэтыя інтэрфейсы? Гэта BIOS, што ён робіць? Некаторыя самаправеркі, потым прачытайце вокны з цвёрдага дыска і запусціце яго. Аналагічна, гэты BIOS адпавядае загрузчыку ва ўбудаваным Linux. Гэтаму загрузніку неабходна прачытаць ядро Linux на Flash і запусціць яго.
2. Якая мэта запуску вокнаў? Вядома, гэта чат у Інтэрнэце ці нешта падобнае. Дзе гэтыя Інтэрнэт і прылады чата? На дыску C і дыску D. Такім чынам, вокны павінны спачатку ідэнтыфікаваць дыск C і дыск D. Мы называем яе каранёвай файлавай сістэмай пад Linux.
3. Windows можа распазнаць дыск C і дыск D, таму ён павінен умець чытаць і запісваць жорсткі дыск. Уцягнутыя рэчы называюцца кіроўцамі. Зразумела, гэта не толькі цвёрды дыск, але і сеткавая карта, USB і гэтак далей. Убудаваны Linux можа чытаць і выконваць прыкладання з Flash, і ён таксама павінен мець драйверы Flash. Зразумела, гэта не толькі Flash.
Давайце пагаворым пра гэта спачатку, убудаваны LINUX утрымлівае чатыры асноўныя часткі: загрузчык, ядро, драйвер і каранёвая файлавая сістэма.
Адзін, загрузчык
Гэта крыху больш складаная праграма голай дошкі. Але зразумець і напісаць гэтую праграму без дошкі няпроста. Карысныя інструменты пад Windows аслабляюць нашы магчымасці праграмавання.
Шмат хто выкарыстоўвае ADS і KEIL, як толькі яны ўбудоўваюцца. Ці можаце вы адказаць на гэтыя пытанні?
1. Пасля ўключэння харчавання, дзе працэсар атрымлівае інструкцыі для выканання?
Адказ: Як правіла, інструкцыя ад Flash.
2. Але Flash можна толькі чытаць, а не пісаць непасрэдна. Калі я выкарыстоўваю глабальныя зменныя, дзе гэтыя глабальныя зменныя?
Адказ: Глабальныя зменныя павінны быць у памяці
3. Дык хто ўкладае ў памяць глабальныя зменныя?
Адказ: Ці можаце вы адказаць сябру, які доўгі час карыстаўся ADS і KEIL? Для гэтага патрэбны "пераезд". У ADS або KEIL код пераезду піша вам кампанія, якая вырабляе гэтыя інструменты. Вы калі-небудзь чыталі яго?
4. Памяць настолькі вялікая, як мне даведацца, па якім адрасе трэба прачытаць "змест, які першапачаткова захоўваецца ў Flash"?
Адказ: Гэты адрас вызначаецца "сцэнарыям спасылкі", у ADS ёсць файлы роскіду, а ў KEIL - аналагічныя файлы. Але вы яго вывучалі?
5. Вы сказалі, што перамяшчэнне - гэта капіраванне праграмы з Flash у памяць, так што гэтая праграма можа чытаць Flash? Адказ: Так, вам трэба ўмець працаваць з Flash. Вядома, не толькі гэтыя, але і ўстаноўка гадзінніка, каб сістэма працавала хутчэй і гэтак далей. Давайце спытаемся і адкажам тут спачатку, загрузчык, праграма без платы, на самай справе мае тры асноўныя моманты:
1. Функцыянаванне апаратнага забеспячэння
2. Разуменне працэсараў сістэмы ARM
3. Асноўныя паняцці праграмы: перасоўванне, стэк, сегмент кода, сегмент дадзеных, сегмент BSS і гэтак далей.
Для працы апаратнага забеспячэння вам неабходна ўбачыць прынцыповую схему і кіраўніцтва чыпа. Для гэтага патрэбны пэўны аб'ём апаратных ведаў. Для гэтага не трэба ўмець распрацоўваць апаратнае забеспячэнне, але хаця б разумець яго; для гэтага не патрэбна магчымасць разумець аналагавыя схемы, а разумець лічбавыя схемы. Я навучыўся гэтай здольнасці ў школе. Дзвюх кніг (назвы кнігі я забыў) дастаткова. Але я сумняваюся, што ў вас ёсць цярпенне дачытаць гэтыя дзве кнігі. Не ведаю, ці ёсць зараз больш хуткая кніга. Калі вы хочаце зрабіць гэта хутка, адпусціце гэта спачатку, а калі не разумееце, проста спытайцеся ў Google і адпраўце паведамленне.
Да таго ж, чып-інструкцыю трэба чытаць, не шукайце кітайскую, а толькі ангельскую. Спачатку было вельмі балюча, але потым, калі граматыка і слоўнікавы запас азнаёміліся, лёгка прачытаць любое кіраўніцтва па чыпах.
Для разумення працэсараў сістэмы ARM, калі ласка, звярніцеся да Du Chunlei's. У ім гаворыцца пра інструкцыі па зборцы, рэжымы выключэння, MMU і г. д. Проста гэтыя 3 часткі зместу трэба зразумець.
Асноўная канцэпцыя праграмы, канечне, кароль - паглядзець на прынцыпы кампіляцыі. На жаль, гэты тып кніг, безумоўна, мае ўзровень нябеснай кнігі. Я раю вам не глядзець яго, калі вы не супер геній. Проста глядзіце і першае відэа, якое я напісаў, не хвалюйцеся, не марнуйце грошы. Пасля відэа і правядзення эксперыментаў, звязаных з апаратным забеспячэннем, гэтыя паняцці стануць зразумелымі. Я не знайшоў другога набору кніг і відэа, якія б распавядалі пра гэтыя паняцці, што дазваляе мне хваліцца гэтым усляпую. Для загрузніка я спачатку глядзеў яго, калі вучыўся, а потым сам напісаў праграму і правёў усе эксперыменты на розных апаратных сродках, такіх як GPIO, гадзіны, SDRAM, UART і NAND. Калі вы зробіце іх зразумелымі, лёгка зразумець u-boot, згрупаваўшы іх. Падводзячы вынік, каб зразумець схему апаратнага забеспячэння і кіраўніцтва чыпа, вам трэба знайсці інфармацыю самастойна. У астатнім проста прытрымлівайцеся раздзелу і першы этап відэа, каб даведацца.
Па-другое, ядро
Тым, хто хоча пачаць, трэба спачатку прапусціць навучанне ядру і навучыцца непасрэдна пісаць драйверы.
Каб стаць майстрам, ядро павінна глыбока разумець. Звярніце ўвагу, што я кажу пра разуменне, у мяне няма экстравагантнай надзеі напісаць ядро.
Каб зразумець механізм планавання, механізм кіравання памяццю, механізм кіравання файламі і г.д.
Рэкамендую дзве кнігі:
1. Прачытайце, калі ласка, прачытайце тонкую кнігу (Плывучае грамадства падкрэслівае хуткасць)
2. Выберыце для чытання, хочаце ведаць, які раздзел прачытаць, які раздзел
Тры, едзьце
Драйвер складаецца з дзвюх частак: працы самога абсталявання і структуры драйвера.
Зноў апаратнае забеспячэнне. Яшчэ неабходна разабрацца ў прынцыповай схеме і інструкцыі па чыпе. Практыкуйцеся больш. Калі казаць пра фрэймворк драйвера, то ёсць некалькі кніг, каб пазнаёміць яго. LDD3, кніга, напісаная замежнікам, уводзіць шмат паняццяў і вартая таго, каб яе прачытаць. Аднак яго роля абмяжоўваецца ўвядзеннем паняццяў. У асноўным я выкарыстаў яго, каб азнаёміцца з паняццямі, перш чым пачаць, а потым выкінуў яго пасля пачатку.
Больш поўнае знаёмства з кіроўцам павінна быць ад Song Baohua. Шчыра кажучы, чытаў толькі каталог. Шмат хто сказаў, што так, я рэкамендую яго тут.
Калі вы хочаце глыбей разабрацца ў пэўнай вобласці, гэта, безумоўна, супер5-зоркавая рэкамендацыя. Яе не чакаеш прачытаць, больш за 1,800 старонак, два тамы ўверх і ўніз. Калі я не ўпэўнены ў пэўнай вобласці, я праглядаю яе. Любая частка гэтай кнігі можа ахопліваць дзвесце-трыста старонак, што вельмі падрабязна. І правесці аналіз зыходнага кода ядра з пэўнай мэтай. У якасці прыкладу бярэцца Linux 2.4, але прынцып той жа, і ён таксама дастасавальны да іншых версій Linux. Ёсць яшчэ знаёмствы? Вядома, ёсць другі выпуск Wei Dongshan Linux Video. У «Поўным даведніку па распрацоўцы ўбудаваных праграм Linux» не так шмат гаворыцца пра драйвер, і ён недастаткова глыбокі.
Паспрабуйце напісаць драйвер для ўсяго апаратнага забеспячэння вашай распрацоўнай платы. Калі ў вас праблема, трэба спачатку «балюча падумаць». У працэсе разважанняў вы звяжаце шмат неістотных ведаў і, нарэшце, атрымаеце іх.
Па-чацвёртае, каранёвая файлавая сістэма
Вы калі-небудзь задумваліся над гэтымі двума пытаннямі:
1. У прадуктах Linux некаторыя выкарыстоўваюцца для маніторынгу, некаторыя выкарыстоўваюцца ў якасці мабільных тэлефонаў, а некаторыя выкарыстоўваюцца ў якасці планшэтаў. Такім чынам, пасля запуску ядра, пасля мантавання каранёвай файлавай сістэмы, якое прыкладанне трэба запусціць?
Адказ: Ядро не ведае або не цікавіцца, якую карыстальніцкую праграму трэба запусціць. Ён запускае толькі праграму ініцыялізацыі, якая адпавядае /sbin/init.
Відавочна, што гэта дадатак павінна прачытаць файл канфігурацыі і запусціць карыстальніцкую праграму (маніторынг, ручны інтэрфейс, інтэрфейс планшэта і г.д.) у адпаведнасці з файлам канфігурацыі. Гэтае пытанне нагадвае нам, што змесціва файлавай сістэмы мае некаторыя ўмоўнасці, такія як /sbin /init, патрабуецца файл канфігурацыі.
2. Ці задумваліся вы калі-небудзь пра тое, хто рэалізаваў printf, які выкарыстоўваецца ў напісаных вамі праграмах hello і world?
Адказ: гэтая функцыя рэалізавана не вамі, а функцыяй бібліятэкі. Калі ён запускаецца, ён павінен знайсці бібліятэку.
Гэтае пытанне нагадвае нам, што ў файлавай сістэме ўсё яшчэ ёсць бібліятэкі. Вось простае пытанне і адказ. Калі вы хочаце даведацца больш, вы можаце паглядзець init.c у busybox, каб даведацца, што робіць працэс ініцыялізацыі. Вядома, вы таксама можаце ўбачыць раздзел аб стварэнні каранёвай файлавай сістэмы ў .
Мой вопыт навучання
1. Калі я вучыўся ў школе, я вывучаў фізіку і электроніку. Фактычна, я не вучыў распрацоўваць схемы на курсе, а толькі выкладаў некаторыя веды аб электронных схемах. Дызайн друкаванай платы выкладаў сам у лабараторыі. Я распрацаваў толькі 2-слаёвую дошку, і цяпер амаль забыўся пра гэта. Але ён захоўвае магчымасць чытаць прынцыповую схему і кіраўніцтва па чыпе.
2. Я атрымаў дыплом праграмнага забеспячэння і мяне вельмі цікавіць дызайн праграмнага забеспячэння, але я вывучыў толькі мову C і базу дадзеных. Я з цікавасцю адказваў на шмат конкурсных пытанняў. Я не магу ўдзельнічаць у конкурсе, але маю салідную практыку мовы C.
3. У лабараторыі, у першай кампаніі, я распрацаваў некалькі простых карт PCI і напісаў драйвер для Windows
4. У другой кампаніі, выкарыстоўваючы 51 адначыпавы мікракампутар у якасці аўтамабільнага тэлефона, пачалі ўступаць на шлях чыстага праграмнага забеспячэння.
5. Я пачаў адчуваць недахопы адначыпавага мікракампутара. Я звольніўся на паўгода, каб вывучыць Linux за зачыненымі дзвярыма, пачынаючы з таго, як кіраваць чырвонай шапкай. Крок складаецца ў тым, каб спачатку паглядзець на гэта, потым напісаць праграму для працы з апаратным забеспячэннем на голай плаце, а потым прааналізаваць u-boot. У той жа час у мяне ёсць некаторае разуменне структуры LINUX.
Пры напісанні голых дошак рэкамендуецца ўмацаваць разуменне перапыненняў. Ядро выкарыстоўвае перапыненні для выканання розных функцый.
6. Пасля аналізу u-boot пачніце простае праграмаванне драйвера. У гэты час здольнасць яшчэ вельмі слабая.
7. Пачаў працаваць у ZTE, працаваў 2 гады, пісаў усе віды драйвераў, вырашаў разнастайныя праблемы (праблемы з кіраваннем аўтамабілем, дапамога ў выяўленні праблем з праграмамі), і здольнасці загартаваліся.
|
Увядзіце адрас электроннай пошты, каб атрымаць сюрпрыз
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> афрыкаанс
sq.fmuser.org -> албанская
ar.fmuser.org -> арабская
hy.fmuser.org -> Армянскі
az.fmuser.org -> азербайджанскі
eu.fmuser.org -> баскская
be.fmuser.org -> Беларуская
bg.fmuser.org -> Балгарская
ca.fmuser.org -> каталонская
zh-CN.fmuser.org -> кітайскі (спрошчаны)
zh-TW.fmuser.org -> Кітайскі (традыцыйны)
hr.fmuser.org -> харвацкая
cs.fmuser.org -> чэшская
da.fmuser.org -> дацкая
nl.fmuser.org -> Галандская
et.fmuser.org -> эстонская
tl.fmuser.org -> філіпінская
fi.fmuser.org -> фінская
fr.fmuser.org -> Французская
gl.fmuser.org -> галісійская
ka.fmuser.org -> грузінскі
de.fmuser.org -> нямецкая
el.fmuser.org -> Грэчаскі
ht.fmuser.org -> Гаіцянскі крэол
iw.fmuser.org -> іўрыт
hi.fmuser.org -> хіндзі
hu.fmuser.org -> Венгерская
is.fmuser.org -> ісландская
id.fmuser.org -> інданезійская
ga.fmuser.org -> ірландскі
it.fmuser.org -> Італьянская
ja.fmuser.org -> японскі
ko.fmuser.org -> карэйская
lv.fmuser.org -> латышскі
lt.fmuser.org -> Літоўскі
mk.fmuser.org -> македонская
ms.fmuser.org -> малайская
mt.fmuser.org -> мальтыйская
no.fmuser.org -> Нарвежскі
fa.fmuser.org -> персідская
pl.fmuser.org -> польская
pt.fmuser.org -> партугальская
ro.fmuser.org -> Румынская
ru.fmuser.org -> руская
sr.fmuser.org -> сербская
sk.fmuser.org -> славацкая
sl.fmuser.org -> Славенская
es.fmuser.org -> іспанская
sw.fmuser.org -> суахілі
sv.fmuser.org -> шведская
th.fmuser.org -> Тайская
tr.fmuser.org -> турэцкая
uk.fmuser.org -> украінскі
ur.fmuser.org -> урду
vi.fmuser.org -> В'етнамская
cy.fmuser.org -> валійская
yi.fmuser.org -> Ідыш
FMUSER Бесправадная перадача відэа і аўдыё лягчэй!
Кантакт
Адрас:
No.305 Нумар HuiLan Будынак No.273 Huanpu Road Гуанчжоу Кітай 510620
катэгорыі
бюлетэнь