FMUSER Truyền video và âm thanh không dây dễ dàng hơn!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Người Afrikaans
sq.fmuser.org -> Tiếng Albania
ar.fmuser.org -> tiếng Ả Rập
hy.fmuser.org -> Armenia
az.fmuser.org -> Azerbaijan
eu.fmuser.org -> Basque
be.fmuser.org -> Tiếng Belarus
bg.fmuser.org -> Tiếng Bulgaria
ca.fmuser.org -> Catalan
zh-CN.fmuser.org -> Tiếng Trung (Giản thể)
zh-TW.fmuser.org -> Trung Quốc (truyền thống)
hr.fmuser.org -> Tiếng Croatia
cs.fmuser.org -> Tiếng Séc
da.fmuser.org -> Đan Mạch
nl.fmuser.org -> Hà Lan
et.fmuser.org -> Tiếng Estonia
tl.fmuser.org -> Phi Luật Tân
fi.fmuser.org -> Phần Lan
fr.fmuser.org -> Pháp
gl.fmuser.org -> Galicia
ka.fmuser.org -> tiếng Georgia
de.fmuser.org -> Đức
el.fmuser.org -> Hy Lạp
ht.fmuser.org -> Tiếng Creole của Haiti
iw.fmuser.org -> Tiếng Do Thái
hi.fmuser.org -> Tiếng Hindi
hu.fmuser.org -> Hungary
is.fmuser.org -> tiếng Iceland
id.fmuser.org -> tiếng Indonesia
ga.fmuser.org -> Ailen
it.fmuser.org -> Ý
ja.fmuser.org -> Nhật Bản
ko.fmuser.org -> Hàn Quốc
lv.fmuser.org -> Tiếng Latvia
lt.fmuser.org -> Tiếng Litva
mk.fmuser.org -> Người Macedonian
ms.fmuser.org -> Mã Lai
mt.fmuser.org -> Maltese
no.fmuser.org -> Na Uy
fa.fmuser.org -> tiếng Ba Tư
pl.fmuser.org -> Tiếng Ba Lan
pt.fmuser.org -> tiếng Bồ Đào Nha
ro.fmuser.org -> Rumani
ru.fmuser.org -> tiếng Nga
sr.fmuser.org -> Tiếng Serbia
sk.fmuser.org -> Tiếng Slovak
sl.fmuser.org -> Tiếng Slovenia
es.fmuser.org -> tiếng Tây Ban Nha
sw.fmuser.org -> Tiếng Swahili
sv.fmuser.org -> Thụy Điển
th.fmuser.org -> Thái
tr.fmuser.org -> Thổ Nhĩ Kỳ
uk.fmuser.org -> Tiếng Ukraina
ur.fmuser.org -> Tiếng Urdu
vi.fmuser.org -> Tiếng việt
cy.fmuser.org -> tiếng Wales
yi.fmuser.org -> Yiddish
Để phát triển ứng dụng: cần học tốt ngôn ngữ C, cấu trúc dữ liệu, JAVA,…. Không có gì đặc biệt cần chú ý trong phát triển ứng dụng nhúng và phát triển ứng dụng trên PC. Có thể bạn nói rằng bạn cần tối ưu hóa hệ thống nhúng, vâng, bạn cần phải tối ưu hóa, nhưng chương trình chưa tối ưu hóa không khác gì chương trình phát triển trên PC. Ngoài ra, khi bạn có khả năng tối ưu hóa, bạn không còn quen đặt câu hỏi này nữa. Ví dụ cụ thể, chẳng hạn như giao diện phát triển, chúng tôi sử dụng VC trên PC; trong Linux nhúng, chúng tôi có thể sử dụng QT và Android. Lúc này, bạn nên học lập trình QT và Android. Nhưng nền tảng vẫn là C hoặc JAVA, và trên cơ sở này, hãy làm quen với các giao diện của chúng. Nếu bạn đã học VC, cần có thời gian để hiểu các lớp và điều khiển đó.
Nếu bạn muốn tìm hiểu hệ thống cơ bản, đây là chuyên môn của tôi, nhưng tôi có thể nói một chút.
Trước khi trả lời câu hỏi này, tôi xin trả lời: Nhiều người hỏi tôi là học lái xe hay học nộp hồ sơ? Tôi chỉ có thể nói rằng nó dựa trên sự quan tâm, và trình điều khiển và ứng dụng không hoàn toàn tách biệt.
1. Các trình điều khiển mà chúng ta đang nói đến không chỉ giới hạn ở các hoạt động phần cứng, mà còn là các khái niệm như nguyên tắc hệ điều hành và quy trình lên lịch ngủ và thức. Nếu bạn muốn viết một ứng dụng tốt, và bạn muốn giải quyết tốt hơn những vấn đề mà ứng dụng gặp phải thì bạn nên nắm được những kiến thức này
2. Rào cản thấp đối với việc áp dụng, đặc biệt là ANDROID, JAVA thuần hiện tại. Cá nhân tôi cho rằng con đường phát triển ứng dụng thành thạo trong kinh doanh. Ví dụ, trong ngành truyền thông, ngành IPTV và ngành điện thoại di động, bạn hiểu nhu cầu của ngành. Vì vậy, những người làm lãnh đạo hầu hết là đơn.
3. Được định hướng. Thực ra, tôi không muốn gọi nó là "đang là người lái xe", mà tôi muốn gọi nó là "là một hệ thống cấp thấp". Sau khi thực hiện, điều này sẽ giết chết tất cả các ngành công nghiệp. Tôi đã làm việc trong vài năm và đã sản xuất điện thoại di động, IPTV và TV hội nghị, nhưng những sản phẩm này không có gì khác biệt đối với tôi vì tôi chỉ làm lớp dưới cùng. Việc kinh doanh của họ không liên quan gì đến tôi. Khi có vấn đề với ứng dụng và họ không thể giải quyết được, tôi sẽ đưa ra ý tưởng từ góc độ hạt nhân và cung cấp cho họ các công cụ. Cá nhân tôi nghĩ rằng tôi là một chuyên gia kỹ thuật trong hướng phát triển của lớp dưới cùng.
4. Trên thực tế, không có ranh giới giữa việc làm ở lớp dưới cùng hoặc làm ứng dụng. Nếu bạn có trải nghiệm lớp dưới cùng, bạn sẽ cảm thấy rất thoải mái khi thực hiện ứng dụng. Với kinh nghiệm kinh doanh, bạn có thể hiểu được lớp dưới cùng và bạn sẽ sớm có thể thành lập một nhóm.
Quay lại câu hỏi làm thế nào để học. Những gì được bao gồm trong hệ thống cơ bản Linux nhúng? Đừng lo lắng, bạn sẽ biết điều đó bằng cách đưa ra một ví dụ.
1. Khi máy tính được bật lên, ai là người hiển thị các giao diện đó? Nó là BIOS, nó làm gì? Một số tự kiểm tra, sau đó đọc các cửa sổ từ đĩa cứng và khởi động nó. Tương tự, BIOS này tương ứng với bộ nạp khởi động trong Linux nhúng. Bộ nạp khởi động này cần đọc nhân Linux trên Flash và khởi động nó.
2. Mục đích khởi động windows là gì? Tất nhiên đó là trò chuyện trực tuyến hay gì đó. Những công cụ trò chuyện và Internet này ở đâu? Trên ổ C và ổ D. Do đó, trước tiên windows phải xác định ổ C và ổ D. Chúng tôi gọi nó là hệ thống tệp gốc trong Linux.
3. Windows có thể nhận dạng ổ C và ổ D, vì vậy nó phải có khả năng đọc và ghi ổ cứng. Những thứ liên quan được gọi là trình điều khiển. Tất nhiên, nó không chỉ là đĩa cứng, mà còn là card mạng, USB, v.v. Linux nhúng có thể đọc và thực thi các ứng dụng từ Flash và nó cũng phải có trình điều khiển Flash. Tất nhiên, nó không chỉ là Flash.
Trước tiên, hãy nói về nó, LINUX nhúng chứa bốn phần chính: bộ nạp khởi động, hạt nhân, trình điều khiển và hệ thống tệp gốc.
Một, bộ nạp khởi động
Nó là một chương trình bảng trần phức tạp hơn một chút. Nhưng để hiểu và viết được chương trình trần này không phải là điều dễ dàng. Các công cụ hữu ích trong Windows làm suy yếu khả năng lập trình của chúng ta.
Nhiều người sử dụng QUẢNG CÁO và KEIL ngay sau khi họ chơi được nhúng. Bạn có thể trả lời những câu hỏi này được không?
1. Sau khi bật nguồn, CPU sẽ tìm nạp các hướng dẫn để thực thi ở đâu?
Trả lời: Nói chung, hướng dẫn là từ Flash.
2. Nhưng Flash chỉ có thể đọc được chứ không thể ghi trực tiếp. Nếu tôi sử dụng các biến toàn cục, thì các biến toàn cục này ở đâu?
Trả lời: Các biến toàn cục phải ở trong bộ nhớ
3. Vậy ai là người đưa các biến toàn cục vào bộ nhớ?
Trả lời: Bạn có thể trả lời một người bạn đã sử dụng ADS và KEIL lâu không? Điều này đòi hỏi phải "tái định cư". Trong ADS hoặc KEIL, mã di dời được viết cho bạn bởi công ty sản xuất các công cụ này. Bạn đã từng đọc nó chưa?
4. Bộ nhớ quá lớn, làm cách nào để biết địa chỉ nào để đọc "nội dung ban đầu được lưu trong Flash" vào bộ nhớ?
Trả lời: Địa chỉ này được xác định bởi "tập lệnh liên kết", có các tệp phân tán trong ADS và các tệp tương tự trong KEIL. Nhưng, bạn đã nghiên cứu nó chưa?
5. Bạn cho biết việc di dời là sao chép một chương trình từ Flash vào bộ nhớ, vậy chương trình này có đọc được Flash không? Trả lời: Có, bạn cần có khả năng vận hành Flash. Tất nhiên không chỉ những điều này, mà còn cài đặt đồng hồ để làm cho hệ thống chạy nhanh hơn, v.v. Trước tiên, hãy hỏi và trả lời ở đây, bộ nạp khởi động, một chương trình bo mạch chủ, thực sự có ba điểm chính:
1. Hoạt động của phần cứng
2. Hiểu biết về bộ vi xử lý hệ thống ARM
3. Các khái niệm cơ bản của chương trình: tái định vị, ngăn xếp, phân đoạn mã, phân đoạn dữ liệu, phân đoạn BSS, v.v.
Đối với hoạt động của phần cứng, bạn cần xem sơ đồ và hướng dẫn sử dụng chip. Điều này đòi hỏi một lượng kiến thức phần cứng nhất định. Nó không yêu cầu bạn có khả năng thiết kế phần cứng, nhưng ít nhất phải hiểu nó; nó không đòi hỏi phải có khả năng hiểu các mạch tương tự, nhưng phải hiểu các mạch kỹ thuật số. Tôi đã học khả năng này ở trường. Hai cuốn sách (tên cuốn sách mà tôi quên mất) là đủ. Nhưng tôi nghi ngờ bạn có đủ kiên nhẫn để đọc xong hai cuốn sách này. Không biết bây giờ có sách nào nhanh hơn không. Muốn làm nhanh thì bỏ qua cái này trước, không hiểu thì cứ hỏi Google rồi đăng.
Ngoài ra, phải đọc sách hướng dẫn sử dụng chip, đừng tìm tiếng Trung, hãy nhìn tiếng Anh. Lúc đầu thì rất đau nhưng sau này khi đã quen ngữ pháp và từ vựng thì việc đọc sách hướng dẫn sử dụng chip rất dễ dàng.
Để biết thêm về bộ xử lý hệ thống ARM, vui lòng xem Du Chunlei's. Nó nói về hướng dẫn lắp ráp, chế độ ngoại lệ, MMU, v.v. Chỉ cần 3 phần nội dung này là bạn cần hiểu.
Khái niệm cơ bản của chương trình, tất nhiên, vua là xem xét các nguyên tắc biên soạn. Thật không may, loại sách này chắc chắn thuộc cấp sách trên trời. Tôi khuyên bạn không nên xem nó trừ khi bạn là một siêu thiên tài. Chỉ cần xem và video đầu tiên mình viết các bạn đừng lo, không tốn tiền. Theo dõi video và làm các thí nghiệm liên quan đến phần cứng, các khái niệm này sẽ trở nên rõ ràng. Tôi chưa tìm thấy bộ sách hoặc video thứ hai nói về những khái niệm này, cho phép tôi khoe khoang về nó một cách mù quáng. Đối với bộ nạp khởi động, lần đầu tiên tôi xem nó khi tôi đang học, sau đó tôi tự viết chương trình và thực hiện tất cả các thử nghiệm trên các phần cứng khác nhau, chẳng hạn như GPIO, đồng hồ, SDRAM, UART và NAND. Nếu bạn làm rõ chúng, bạn sẽ dễ hiểu u-boot bằng cách nhóm lại với nhau. Tóm lại, để hiểu sơ đồ phần cứng và hướng dẫn sử dụng chip, bạn cần tự tìm thông tin. Đối với phần còn lại, chỉ cần theo dõi danh sách chương của và giai đoạn đầu của video để tìm hiểu.
Hai, hạt nhân
Những ai muốn bắt đầu nên bỏ qua phần học kernel trước và học cách viết trình điều khiển trực tiếp.
Để trở thành bậc thầy, kernel phải có hiểu biết sâu rộng. Lưu ý rằng tôi đang nói về sự hiểu biết, tôi không có hy vọng xa hoa nào để viết kernel.
Để hiểu cơ chế lập lịch, cơ chế quản lý bộ nhớ, cơ chế quản lý tập tin,… bên trong.
Đề xuất hai cuốn sách:
1. Đọc qua, xin hãy đọc sách mỏng (Xã hội trôi nổi nhấn mạnh tốc độ)
2. Chọn đọc, muốn biết phần nào đọc phần nào
Ba, lái xe
Trình điều khiển bao gồm hai phần: hoạt động của chính phần cứng và khuôn khổ của trình điều khiển.
Lại là phần cứng. Nó vẫn cần thiết để hiểu sơ đồ và hướng dẫn sử dụng chip. Luyện tập nhiều hơn. Nói về khung trình điều khiển, có một số cuốn sách để giới thiệu nó. LDD3, cuốn sách do người nước ngoài viết, giới thiệu nhiều khái niệm và rất đáng đọc. Tuy nhiên, vai trò của nó chỉ giới hạn trong việc giới thiệu các khái niệm. Về cơ bản, tôi đã sử dụng nó để làm quen với các khái niệm trước khi bắt đầu, và sau đó vứt bỏ nó sau khi bắt đầu.
Phần giới thiệu toàn diện hơn về trình điều khiển nên là của Song Baohua. Thành thật mà nói, tôi chỉ đọc danh mục. Nhiều người nói có, tôi giới thiệu nó ở đây.
Nếu bạn muốn hiểu sâu về một lĩnh vực nào đó, đó chắc chắn là một gợi ý siêu 5 sao. Bạn không mong đợi để đọc nó, hơn 1,800 trang, hai tập lên và xuống. Khi tôi không chắc chắn về một lĩnh vực nào đó, tôi sẽ xem qua nó. Bất kỳ phần nào của cuốn sách này có thể bao gồm hai hoặc ba trăm trang, rất chi tiết. Và để đưa bạn đến phân tích mã nguồn hạt nhân với một mục tiêu nhất định. Nó lấy linux 2.4 làm ví dụ, nhưng nguyên tắc thì giống nhau và nó cũng có thể áp dụng cho các phiên bản khác của linux. Bất kỳ lời giới thiệu khác? Tất nhiên là có, vấn đề thứ hai của Wei Dongshan Linux Video. "Sổ tay Toàn tập về Phát triển Ứng dụng Linux Nhúng" không nói nhiều về trình điều khiển và nó không đủ chuyên sâu.
Cố gắng viết trình điều khiển cho tất cả phần cứng liên quan đến bảng phát triển của bạn. Nếu gặp khó khăn, bạn nên “đau đáu suy nghĩ” trước. Trong quá trình suy nghĩ, bạn sẽ kết nối rất nhiều kiến thức không liên quan và cuối cùng cũng thông qua được.
Thứ tư, hệ thống tệp gốc
Bạn đã bao giờ nghĩ về hai câu hỏi này:
1. Đối với các sản phẩm do Linux tạo ra, một số được sử dụng để giám sát, một số được sử dụng làm điện thoại di động và một số được sử dụng như máy tính bảng. Vậy sau khi khởi động nhân, sau khi gắn hệ thống tệp gốc, ứng dụng nào sẽ được khởi động?
Trả lời: Kernel không biết hoặc không quan tâm chương trình người dùng nào nên được khởi động. Nó chỉ khởi động ứng dụng init, tương ứng với / sbin / init.
Rõ ràng, ứng dụng này phải đọc tệp cấu hình và khởi động chương trình người dùng (giám sát, giao diện thủ công, giao diện máy tính bảng, v.v.) theo tệp cấu hình. Câu hỏi này nhắc chúng ta rằng nội dung của hệ thống tệp có một số quy ước, chẳng hạn như / sbin / init, một tệp cấu hình là bắt buộc.
2. Bạn đã bao giờ nghĩ ai đã thực hiện printf được sử dụng trong các chương trình hello và world mà bạn đã viết chưa?
Trả lời: Chức năng này không được thực hiện bởi bạn, mà bởi một chức năng thư viện. Khi nó chạy, nó phải tìm thư viện.
Câu hỏi này nhắc nhở chúng ta rằng vẫn còn các thư viện trong hệ thống tệp. Đây là một câu hỏi và câu trả lời đơn giản. Nếu bạn muốn biết thêm, bạn có thể xem init.c của busybox để biết quá trình init thực hiện những gì. Tất nhiên, bạn cũng có thể xem chương về xây dựng hệ thống tệp gốc trong .
Kinh nghiệm học tập của tôi
1. Khi còn đi học, tôi học chuyên ngành vật lý và điện tử. Thực ra trong khóa học mình không dạy cách thiết kế mạch điện mà chỉ dạy một số kiến thức về mạch điện tử. Việc thiết kế PCB do chính tôi dạy trong phòng thí nghiệm. Tôi chỉ thiết kế một bảng 2 lớp, và bây giờ tôi gần như quên nó. Nhưng nó vẫn giữ được khả năng đọc sơ đồ và hướng dẫn sử dụng chip.
2. Tôi đã lấy bằng phần mềm, và tôi rất quan tâm đến thiết kế phần mềm, nhưng tôi chỉ học ngôn ngữ C và cơ sở dữ liệu. Tôi đã làm rất nhiều câu hỏi cạnh tranh với sự quan tâm. Tôi không thể tham gia cuộc thi, nhưng tôi có một nền tảng ngôn ngữ C vững chắc.
3. Trong phòng thí nghiệm, ở công ty đầu tiên, tôi đã thiết kế một số thẻ PCI đơn giản và viết trình điều khiển windows
4. Ở công ty thứ hai, sử dụng 51 máy vi tính chip đơn làm điện thoại ô tô, bắt đầu dấn thân vào con đường phần mềm thuần túy.
5. Tôi bắt đầu cảm thấy những thiếu sót của máy vi tính chip đơn. Tôi đã từ chức nửa năm để học Linux sau những cánh cửa đóng kín, bắt đầu với cách vận hành chiếc mũ đỏ. Bước đầu tiên là xem xét nó, sau đó viết chương trình bảng mạch trần để vận hành phần cứng, và sau đó phân tích u-boot. Đồng thời, tôi có một số hiểu biết về khuôn khổ LINUX.
Khi viết bảng trần, bạn nên củng cố sự hiểu biết của mình về các ngắt. Kernel sử dụng ngắt để hoàn thành các chức năng khác nhau.
6. Sau khi phân tích u-boot, hãy bắt đầu lập trình trình điều khiển đơn giản. Lúc này khả năng còn rất yếu.
7. Bắt đầu làm việc tại ZTE, làm được 2 năm, viết các loại tài xế, giải quyết các loại vấn đề (vấn đề lái xe, giúp định vị vấn đề ứng dụng), năng lực được tôi luyện.
|
Nhập email để nhận bất ngờ
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Người Afrikaans
sq.fmuser.org -> Tiếng Albania
ar.fmuser.org -> tiếng Ả Rập
hy.fmuser.org -> Armenia
az.fmuser.org -> Azerbaijan
eu.fmuser.org -> Basque
be.fmuser.org -> Tiếng Belarus
bg.fmuser.org -> Tiếng Bulgaria
ca.fmuser.org -> Catalan
zh-CN.fmuser.org -> Tiếng Trung (Giản thể)
zh-TW.fmuser.org -> Trung Quốc (truyền thống)
hr.fmuser.org -> Tiếng Croatia
cs.fmuser.org -> Tiếng Séc
da.fmuser.org -> Đan Mạch
nl.fmuser.org -> Hà Lan
et.fmuser.org -> Tiếng Estonia
tl.fmuser.org -> Phi Luật Tân
fi.fmuser.org -> Phần Lan
fr.fmuser.org -> Pháp
gl.fmuser.org -> Galicia
ka.fmuser.org -> tiếng Georgia
de.fmuser.org -> Đức
el.fmuser.org -> Hy Lạp
ht.fmuser.org -> Tiếng Creole của Haiti
iw.fmuser.org -> Tiếng Do Thái
hi.fmuser.org -> Tiếng Hindi
hu.fmuser.org -> Hungary
is.fmuser.org -> tiếng Iceland
id.fmuser.org -> tiếng Indonesia
ga.fmuser.org -> Ailen
it.fmuser.org -> Ý
ja.fmuser.org -> Nhật Bản
ko.fmuser.org -> Hàn Quốc
lv.fmuser.org -> Tiếng Latvia
lt.fmuser.org -> Tiếng Litva
mk.fmuser.org -> Người Macedonian
ms.fmuser.org -> Mã Lai
mt.fmuser.org -> Maltese
no.fmuser.org -> Na Uy
fa.fmuser.org -> tiếng Ba Tư
pl.fmuser.org -> Tiếng Ba Lan
pt.fmuser.org -> tiếng Bồ Đào Nha
ro.fmuser.org -> Rumani
ru.fmuser.org -> tiếng Nga
sr.fmuser.org -> Tiếng Serbia
sk.fmuser.org -> Tiếng Slovak
sl.fmuser.org -> Tiếng Slovenia
es.fmuser.org -> tiếng Tây Ban Nha
sw.fmuser.org -> Tiếng Swahili
sv.fmuser.org -> Thụy Điển
th.fmuser.org -> Thái
tr.fmuser.org -> Thổ Nhĩ Kỳ
uk.fmuser.org -> Tiếng Ukraina
ur.fmuser.org -> Tiếng Urdu
vi.fmuser.org -> Tiếng việt
cy.fmuser.org -> tiếng Wales
yi.fmuser.org -> Yiddish
FMUSER Truyền video và âm thanh không dây dễ dàng hơn!
Liên hệ
Địa Chỉ:
Phòng số 305 Tòa nhà HuiLan Số 273 đường Huanpu Quảng Châu Trung Quốc 510620
Categories
Đăng ký bản tin