FMUSER Kablosuz Video ve Sesi Daha Kolay İletin!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> Arnavutça
ar.fmuser.org -> Arapça
hy.fmuser.org -> Ermeni
az.fmuser.org -> Azerice
eu.fmuser.org -> Bask Dili
be.fmuser.org -> Beyaz Rusça
bg.fmuser.org -> Bulgar
ca.fmuser.org -> Katalanca
zh-CN.fmuser.org -> Çince (Basitleştirilmiş)
zh-TW.fmuser.org -> Çince (Geleneksel)
hr.fmuser.org -> Hırvatça
cs.fmuser.org -> Çekçe
da.fmuser.org -> Danca
nl.fmuser.org -> Hollandalı
et.fmuser.org -> Estonca
tl.fmuser.org -> Filipinli
fi.fmuser.org -> Fince
fr.fmuser.org -> Fransızca
gl.fmuser.org -> Galiçyaca
ka.fmuser.org -> Gürcüce
de.fmuser.org -> Almanca
el.fmuser.org -> Yunanca
ht.fmuser.org -> Haiti Kreyolu
iw.fmuser.org -> İbranice
hi.fmuser.org -> Hintçe
hu.fmuser.org -> Macar
is.fmuser.org -> İzlandaca
id.fmuser.org -> Endonezya
ga.fmuser.org -> İrlandalı
it.fmuser.org -> İtalyan
ja.fmuser.org -> Japonca
ko.fmuser.org -> Korece
lv.fmuser.org -> Letonca
lt.fmuser.org -> Litvanya
mk.fmuser.org -> Makedonca
ms.fmuser.org -> Malayca
mt.fmuser.org -> Malta
no.fmuser.org -> Norveç
fa.fmuser.org -> Farsça
pl.fmuser.org -> Lehçe
pt.fmuser.org -> Portekizce
ro.fmuser.org -> Romen
ru.fmuser.org -> Rusça
sr.fmuser.org -> Sırpça
sk.fmuser.org -> Slovakça
sl.fmuser.org -> Slovence
es.fmuser.org -> İspanyolca
sw.fmuser.org -> Svahili
sv.fmuser.org -> İsveççe
th.fmuser.org -> Tay
tr.fmuser.org -> Türkçe
uk.fmuser.org -> Ukraynaca
ur.fmuser.org -> Urduca
vi.fmuser.org -> Vietnamca
cy.fmuser.org -> Galce
yi.fmuser.org -> Yidiş
Uygulama geliştirme için: C dili, veri yapısı, JAVA vb. İyi öğrenilmelidir. Bilgisayarda gömülü uygulama geliştirme ve uygulama geliştirmede dikkat edilecek özel bir şey yoktur. Belki gömülü sistemi optimize etmeniz gerektiğini söylüyorsunuz, evet, optimize etmeniz gerekiyor, ancak optimize edilmemiş program bilgisayardaki program geliştirmeden farklı değil. Ek olarak, optimize etme yeteneğiniz olduğunda, artık bu soruyu sormaya alışkın değilsiniz. Geliştirme arayüzü gibi belirli bir örnek için, PC'de VC kullanıyoruz; gömülü Linux'ta QT ve Android kullanabiliriz. Şu anda, QT ve Android programlamayı öğrenmelisiniz. Ancak temel hala C veya JAVA'dır ve bu temelde arayüzlerine aşina olun. VC'yi öğrendiyseniz, bu sınıfları ve kontrolleri anlamak zaman alır.
Altta yatan sistemi öğrenmek istiyorsanız, bu benim uzmanlık alanım, ancak biraz söyleyebilirim.
Bu soruyu cevaplamadan önce cevaplayayım: Birçok insan bana soruyor, araba sürmeyi öğrenmek mi yoksa uygulamayı öğrenmek mi? Sadece ilgiye dayalı olduğunu söyleyebilirim ve sürücüler ve uygulamalar tamamen ayrı değil.
1. Bahsettiğimiz sürücüler, donanım işlemleriyle sınırlı olmayıp, aynı zamanda işletim sistemi ilkeleri ve işlem uyku ve uyanma zamanlaması gibi kavramlardır. İyi bir uygulama yazmak istiyorsanız ve uygulamanın karşılaştığı sorunları daha iyi çözmek istiyorsanız bu bilgileri anlamalısınız.
2. Uygulamaya düşük engeller, özellikle mevcut ANDROID, saf JAVA. Kişisel olarak uygulama geliştirme yolunun iş dünyasında yeterli olduğunu düşünüyorum. Örneğin, iletişim endüstrisinde, IPTV endüstrisinde ve cep telefonu endüstrisinde, endüstrinin ihtiyaçlarını anlıyorsunuz. Bu nedenle lider olan kişiler çoğunlukla uygulamalardır.
3. Sürülün. Aslında buna "sürücü olmak" demek istemiyorum ama "düşük seviyeli bir sistem" demek istiyorum. Bir kez yapıldığında, bu tüm endüstrileri öldürecektir. Birkaç yıl çalıştım ve cep telefonları, IPTV ve konferans TV yaptım, ancak bu ürünler benim için bir fark yaratmıyor çünkü sadece alt katmanı yapıyorum. İşlerinin benimle hiçbir ilgisi yok. Uygulamayla ilgili bir sorun olduğunda ve çözemediklerinde, onlara çekirdek perspektifinden bir fikir vereceğim ve onlara araçlar sağlayacağım. Ben şahsen alt katmanın geliştirme yönünde teknik bir uzman olduğumu düşünüyorum.
4. Aslında alt katmanı yapmakla uygulamayı yapmak arasında bir sınır yoktur. Alt katman deneyimine sahipseniz, uygulamayı yaptığınızda çok rahat hissedeceksiniz. İş deneyimi ile alt katmanı öğrenebilir ve yakında bir ekip kurabilirsiniz.
Nasıl öğrenileceği sorusuna geri dönelim. Gömülü Linux temel sistemine neler dahildir? Merak etmeyin, bir örnek vererek anlayacaksınız.
1. Bilgisayar açıldığında, bu arayüzleri kim görüntülüyor? BIOS, ne işe yarıyor? Bazı kendi kendine kontroller, ardından sabit diskten pencereleri okuyun ve başlatın. Benzer şekilde, bu BIOS, gömülü Linux'taki önyükleyiciye karşılık gelir. Bu bootloader'ın Linux çekirdeğini Flash'ta okuması ve başlatması gerekiyor.
2. Pencereleri başlatmanın amacı nedir? Elbette çevrimiçi sohbet falan. Bu İnternet ve sohbet araçları nerede? C sürücüsünde ve D sürücüsünde. Bu nedenle, pencereler önce C sürücüsünü ve D sürücüsünü tanımlamalıdır. Biz buna Linux altında kök dosya sistemi diyoruz.
3. Windows, C sürücüsünü ve D sürücüsünü tanıyabilir, bu nedenle sabit sürücüyü okuyup yazabilmelidir. İlgili şeylere sürücüler denir. Tabii ki, bu sadece bir sabit disk değil, aynı zamanda bir ağ kartı, USB vb. Gömülü Linux, uygulamaları Flash'tan okuyabilir ve çalıştırabilir ve ayrıca Flash sürücülerine sahip olması gerekir. Tabii ki bu sadece Flash değil.
İlk önce bunun hakkında konuşalım, gömülü LINUX dört ana bölümden oluşur: önyükleyici, çekirdek, sürücü ve kök dosya sistemi.
Bir, önyükleyici
Biraz daha karmaşık bir çıplak tahta programıdır. Ancak bu çıplak tahta programı anlamak ve yazmak kolay değil. Windows altındaki kullanışlı araçlar programlama yeteneğimizi zayıflatır.
Birçok kişi, gömülü oynar oynar oynamaz ADS ve KEIL kullanır. Bu soruları cevaplayabilir misiniz?
1. Güç açıldığında, CPU yürütme için talimatları nereden alır?
Cevap: Genel olarak talimat Flash'tan alınmıştır.
2. Ancak Flash yalnızca okunabilir ve doğrudan yazılamaz. Global değişkenler kullanırsam, bu global değişkenler nerede?
Cevap: Global değişkenler hafızada olmalıdır
3. Öyleyse, global değişkenleri hafızaya kim koyar?
Cevap: ADS ve KEIL'i uzun süre kullanan bir arkadaşınıza cevap verebilir misiniz? Bu, "yer değiştirme" gerektirir. ADS veya KEIL'de yer değiştirme kodu, bu araçları yapan firma tarafından sizin için yazılır. Hiç okudun mu?
4. Hafıza o kadar büyük ki, "Flash'ta orijinal olarak depolanan içeriği" hafızaya hangi adresi okuyacağımı nasıl bilebilirim?
Cevap: Bu adres "link script" ile belirlenir, ADS'de scatter dosyaları ve KEIL'de benzer dosyalar vardır. Ama onu inceledin mi?
5. Yer değiştirmenin bir programı Flash'tan belleğe kopyalamak olduğunu söylediniz, böylece bu program Flash'ı okuyabilir mi? Cevap: Evet, Flash'ı çalıştırabilmeniz gerekiyor. Tabii ki sadece bunlar değil, aynı zamanda sistemin daha hızlı çalışmasını sağlamak için saati ayarlamak vb. Öncelikle burada sorup cevaplayalım, çıplak kartlı bir program olan bootloader'ın aslında üç ana noktası vardır:
1. Donanımın çalışması
2. ARM sistem işlemcilerini anlama
3. Programın temel kavramları: yer değiştirme, yığın, kod bölümü, veri bölümü, BSS bölümü vb.
Donanımın çalışması için şematik diyagrama ve yonga kılavuzuna bakmanız gerekir. Bu, belirli miktarda donanım bilgisi gerektirir. Donanım tasarlayabilmenizi değil, en azından anlamanızı gerektiriyor; analog devreleri anlayabilmeyi değil, dijital devreleri anlamayı gerektirir. Bu yeteneği okulda öğrendim. İki kitap (unuttuğum kitabın adı) yeterli. Ama bu iki kitabı okumayı bitirmek için sabrınız olduğundan şüpheliyim. Şimdi daha hızlı bir kitap var mı bilmiyorum. Hızlı hale getirmek istiyorsanız, önce bunu bırakın ve anlamıyorsanız, Google'a sorun ve yayınlayın.
Ek olarak, çip kılavuzu okunmalı, Çince'yi aramayın, sadece İngilizce'ye bakın. İlk başta çok acı vericiydi, ancak daha sonra dilbilgisi ve kelime bilgisi aşina olduktan sonra, herhangi bir çip el kitabını okumak kolaydır.
ARM sistem işlemcilerini anlamak için lütfen Du Chunlei'ye bakın. Montaj talimatları, istisna modları, MMU, vb. Hakkında konuşuyor. Sadece bu 3 parça içeriği anlamanız gerekiyor.
Tabii programın temel konsepti, kral derleme ilkelerine bakmaktır. Ne yazık ki, bu tür bir kitap kesinlikle ilahi kitap düzeyindedir. Süper bir dahi değilseniz izlememenizi tavsiye ederim. Sadece izle ve yazdığım ilk video, endişelenme, para harcama. Videoyu izleyerek ve donanımla ilgili deneyler yaparak, bu kavramlar netleşecektir. Bu kavramlardan bahseden ikinci kitap veya video setini bulamadım, bu da körü körüne övünmeme izin veriyor. Bootloader için önce çalışırken izledim, ardından programı kendim yazdım ve tüm deneyleri GPIO, clock, SDRAM, UART ve NAND gibi çeşitli donanımlar üzerinde yaptım. Bunları netleştirirseniz, u-boot'u birlikte gruplayarak anlamak kolaydır. Özetlemek gerekirse, donanım şematik diyagramını ve çip kılavuzunu anlamak için bilgileri kendiniz bulmanız gerekir. Geri kalanı için, sadece bölüm listesini takip edin. ve öğrenilecek videonun ilk aşaması.
İki, çekirdek
Başlamak isteyenler önce çekirdek öğrenmeyi atlamalı ve sürücülerin nasıl yazılacağını doğrudan öğrenmelidir.
Bir usta olmak için çekirdeğin derin bir anlayışa sahip olması gerekir. Anlamaktan bahsettiğime dikkat edin, bir çekirdek yazmak için abartılı bir umudum yok.
İçindeki zamanlama mekanizmasını, bellek yönetim mekanizmasını, dosya yönetim mekanizmasını vb. Anlamak.
İki kitap önerin:
1. Baştan sona okuyun, lütfen ince kitabı okuyun (Yüzen toplum hızı vurgular)
2. Okumayı seçin, hangi bölümü hangi bölümü okuyacağınızı bilmek istiyorum
Üç, sür
Sürücü iki bölümden oluşur: donanımın kendisinin çalışması ve sürücünün çerçevesi.
Yine donanım. Şematik diyagramı ve çip kılavuzunu anlamak hala gereklidir. Daha fazla pratik yapın. Sürücü çerçevesinden bahsetmişken, onu tanıtmak için bazı kitaplar var. Bir yabancının yazdığı kitap olan LDD3, birçok kavramı tanıtır ve okumaya değer. Bununla birlikte, rolü kavramları tanıtmakla sınırlıdır. Başlamadan önce temelde kavramları tanımak için kullandım ve sonra başladıktan sonra çöpe attım.
Sürücüye daha kapsamlı giriş Song Baohua'nın olmalıdır. Dürüst olmak gerekirse, sadece kataloğu okudum. Birçok kişi evet dedi, burada tavsiye ederim.
Belli bir alanı derinlemesine anlamak istiyorsanız, kesinlikle süper 5 yıldızlı bir öneridir. 1,800'den fazla sayfa, iki cilt yukarı ve aşağı okumayı beklemiyorsunuz. Belli bir alandan emin olmadığım zaman, ona bakacağım. Bu kitabın herhangi bir bölümü iki veya üç yüz sayfayı kapsayabilir ve bu çok ayrıntılıdır. Ve sizi çekirdek kaynak kodunu belirli bir hedefle analiz etmeye götürmek için. Örnek olarak linux 2.4'ü alır, ancak prensip aynıdır ve linux'un diğer sürümleri için de geçerlidir. Başka tanıtımınız var mı? Elbette Wei Dongshan Linux Video'nun ikinci sayısı var. "Gömülü Linux Uygulama Geliştirmenin Tam El Kitabı" sürücü hakkında çok fazla konuşmuyor ve yeterince derinlemesine de değil.
Geliştirme panonuza dahil olan tüm donanımlar için bir sürücü yazmaya çalışın. Eğer bir sorununuz varsa, önce "acı içinde düşünmelisiniz". Düşünme sürecinde, birçok alakasız bilgiyi birbirine bağlayacak ve sonunda bunu başaracaksınız.
Dördüncü olarak, kök dosya sistemi
Bu iki soruyu hiç düşündünüz mü:
1. Linux ile yapılan ürünlerde bir kısmı izleme amaçlı, bir kısmı cep telefonu, bir kısmı da tablet olarak kullanılmaktadır. Peki çekirdek başlatıldıktan sonra kök dosya sistemini bağladıktan sonra hangi uygulama başlatılmalıdır?
Cevap: Çekirdek, hangi kullanıcı programının başlatılması gerektiğini bilmiyor veya umursamıyor. Yalnızca / sbin / init'e karşılık gelen init uygulamasını başlatır.
Açıktır ki, bu uygulama konfigürasyon dosyasını okumalı ve konfigürasyon dosyasına göre kullanıcı programını (izleme, manuel arayüz, tablet arayüzü vb.) Başlatmalıdır. Bu soru bize dosya sisteminin içeriğinin / sbin / init gibi bazı kurallara sahip olduğunu, bir yapılandırma dosyası gerektiğini hatırlatır.
2. Yazdığınız merhaba ve dünya programlarında kullanılan printf'i kimin uyguladığını hiç düşündünüz mü?
Cevap: Bu işlev sizin tarafınızdan değil, bir kütüphane işlevi tarafından uygulanmaktadır. Çalıştığı zaman, kütüphaneyi bulması gerekir.
Bu soru bize dosya sisteminde hala kitaplıklar olduğunu hatırlatır. İşte basit bir soru ve cevap. Daha fazlasını öğrenmek istiyorsanız, başlatma işleminin ne yaptığını öğrenmek için meşgul kutusunun init.c dosyasına bakabilirsiniz. Elbette, kök dosya sistemini oluşturma ile ilgili bölümü de şurada görebilirsiniz: .
Öğrenme deneyimim
1. Okuldayken fizik ve elektronik okudum. Aslında derste nasıl devre tasarlanacağını öğretmedim, sadece elektronik devreler hakkında biraz bilgi öğrettim. PCB'nin tasarımı laboratuvarda kendim tarafından öğretildi. Sadece 2 katmanlı bir tahta tasarladım ve şimdi neredeyse unutuyorum. Ancak şematik diyagramı ve çip kılavuzunu okuma yeteneğini korur.
2. Yazılım diploması aldım ve yazılım tasarımıyla çok ilgileniyorum, ancak sadece C dilini ve veri tabanını öğrendim. İlgi ile birçok rekabet sorusu yaptım. Yarışmaya katılamam ama sağlam bir C dili pratiğim var.
3. Laboratuvarda, ilk şirkette, bazı basit PCI kartları tasarladım ve Windows sürücüsünü yazdım
4. 51 tek çipli mikrobilgisayarı araç telefonu olarak kullanan ikinci şirket, saf yazılım yoluna girmeye başladı.
5. Tek çipli mikro bilgisayarın eksikliklerini hissetmeye başladım. Kırmızı şapkayı nasıl kullanacağımdan başlayarak, kapalı kapılar ardında Linux öğrenmek için yarım yıllığına istifa ettim. Adım, önce ona bakmak, ardından donanımı çalıştırmak için çıplak kart programını yazmak ve ardından u-boot'u analiz etmektir. Aynı zamanda, LINUX çerçevesini biraz anlıyorum.
Çıplak tahtalar yazarken, kesintiler konusundaki anlayışınızı güçlendirmeniz önerilir. Çekirdek, çeşitli işlevleri tamamlamak için kesintileri kullanır.
6. U-boot'u analiz ettikten sonra, basit sürücü programlamasını başlatın. Şu anda yetenek hala çok zayıf.
7. ZTE'de çalışmaya başladı, 2 yıl çalıştı, her türlü şoför yazdı, her türlü problemi çözdü (sürüş problemleri, uygulama problemlerinin yerini bulmaya yardımcı olma) ve becerisi güçlendirildi.
|
Sürpriz almak için e-posta girin
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> Arnavutça
ar.fmuser.org -> Arapça
hy.fmuser.org -> Ermeni
az.fmuser.org -> Azerice
eu.fmuser.org -> Bask Dili
be.fmuser.org -> Beyaz Rusça
bg.fmuser.org -> Bulgar
ca.fmuser.org -> Katalanca
zh-CN.fmuser.org -> Çince (Basitleştirilmiş)
zh-TW.fmuser.org -> Çince (Geleneksel)
hr.fmuser.org -> Hırvatça
cs.fmuser.org -> Çekçe
da.fmuser.org -> Danca
nl.fmuser.org -> Hollandalı
et.fmuser.org -> Estonca
tl.fmuser.org -> Filipinli
fi.fmuser.org -> Fince
fr.fmuser.org -> Fransızca
gl.fmuser.org -> Galiçyaca
ka.fmuser.org -> Gürcüce
de.fmuser.org -> Almanca
el.fmuser.org -> Yunanca
ht.fmuser.org -> Haiti Kreyolu
iw.fmuser.org -> İbranice
hi.fmuser.org -> Hintçe
hu.fmuser.org -> Macar
is.fmuser.org -> İzlandaca
id.fmuser.org -> Endonezya
ga.fmuser.org -> İrlandalı
it.fmuser.org -> İtalyan
ja.fmuser.org -> Japonca
ko.fmuser.org -> Korece
lv.fmuser.org -> Letonca
lt.fmuser.org -> Litvanya
mk.fmuser.org -> Makedonca
ms.fmuser.org -> Malayca
mt.fmuser.org -> Malta
no.fmuser.org -> Norveç
fa.fmuser.org -> Farsça
pl.fmuser.org -> Lehçe
pt.fmuser.org -> Portekizce
ro.fmuser.org -> Romen
ru.fmuser.org -> Rusça
sr.fmuser.org -> Sırpça
sk.fmuser.org -> Slovakça
sl.fmuser.org -> Slovence
es.fmuser.org -> İspanyolca
sw.fmuser.org -> Svahili
sv.fmuser.org -> İsveççe
th.fmuser.org -> Tay
tr.fmuser.org -> Türkçe
uk.fmuser.org -> Ukraynaca
ur.fmuser.org -> Urduca
vi.fmuser.org -> Vietnamca
cy.fmuser.org -> Galce
yi.fmuser.org -> Yidiş
FMUSER Kablosuz Video ve Sesi Daha Kolay İletin!
İletişim
Adres:
No.305 Oda HuiLan Binası No. 273 Huanpu Yolu Guangzhou Çin 510620
Kategoriler
Kaydolun