FMUSER Transmitir vídeo e áudio sem fio mais fácil!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> albanês
ar.fmuser.org -> árabe
hy.fmuser.org -> armênio
az.fmuser.org -> Azerbaijão
eu.fmuser.org -> Basco
be.fmuser.org -> bielorrusso
bg.fmuser.org -> búlgaro
ca.fmuser.org -> catalão
zh-CN.fmuser.org -> Chinês (simplificado)
zh-TW.fmuser.org -> chinês (tradicional)
hr.fmuser.org -> croata
cs.fmuser.org -> checo
da.fmuser.org -> dinamarquês
nl.fmuser.org -> holandês
et.fmuser.org -> estoniano
tl.fmuser.org -> filipino
fi.fmuser.org -> finlandês
fr.fmuser.org -> francês
gl.fmuser.org -> galego
ka.fmuser.org -> georgiano
de.fmuser.org -> alemão
el.fmuser.org -> grego
ht.fmuser.org -> crioulo haitiano
iw.fmuser.org -> hebraico
hi.fmuser.org -> Hindi
hu.fmuser.org -> húngaro
is.fmuser.org -> islandês
id.fmuser.org -> indonésio
ga.fmuser.org -> irlandês
it.fmuser.org -> italiano
ja.fmuser.org -> Japonês
ko.fmuser.org -> coreano
lv.fmuser.org -> letão
lt.fmuser.org -> Lituano
mk.fmuser.org -> macedônio
ms.fmuser.org -> malaio
mt.fmuser.org -> maltês
no.fmuser.org - norueguês
fa.fmuser.org -> persa
pl.fmuser.org -> polonês
pt.fmuser.org -> português
ro.fmuser.org -> romeno
ru.fmuser.org -> russo
sr.fmuser.org -> Sérvio
sk.fmuser.org -> Eslovaco
sl.fmuser.org -> esloveno
es.fmuser.org -> espanhol
sw.fmuser.org -> Swahili
sv.fmuser.org -> sueco
th.fmuser.org -> Tailandês
tr.fmuser.org -> turco
uk.fmuser.org -> ucraniano
ur.fmuser.org -> Urdu
vi.fmuser.org -> vietnamita
cy.fmuser.org -> Galês
yi.fmuser.org -> iídiche
Para o desenvolvimento de aplicativos: linguagem C, estrutura de dados, JAVA, etc. precisam ser bem aprendidos. Não há nada de especial a se prestar atenção no desenvolvimento de aplicativos integrados e no desenvolvimento de aplicativos para PC. Talvez você diga que precisa otimizar o sistema embarcado, sim, você precisa otimizar, mas o programa não otimizado não é diferente do desenvolvimento do programa no PC. Além disso, quando você tem a capacidade de otimizar, não está mais acostumado a fazer essa pergunta. Para um exemplo específico, como a interface de desenvolvimento, usamos o VC no PC; no Linux embutido, podemos usar QT e Android. Neste momento, você deve aprender programação QT e Android. Mas a base ainda é C ou JAVA e, com base nisso, familiarize-se com suas interfaces. Se você aprendeu VC, leva tempo para entender essas classes e controles.
Se você quiser aprender o sistema subjacente, esta é minha especialidade, mas posso falar um pouco.
Antes de responder a esta pergunta, deixe-me responder: Muitas pessoas me perguntam, é para aprender a dirigir ou aprender a aplicar? Só posso dizer que é baseado em interesses, e os drivers e aplicativos não são completamente separados.
1. Os drivers de que estamos falando não se limitam a operações de hardware, mas também a conceitos como princípios de sistema operacional e agendamento de sono e ativação de processos. Se você deseja escrever um bom aplicativo e deseja resolver melhor os problemas encontrados pelo aplicativo, deve compreender este conhecimento
2. Baixas barreiras para aplicação, principalmente o atual ANDROID, puro JAVA. Pessoalmente, acho que o caminho de desenvolvimento de aplicativos é proficiente em negócios. Por exemplo, na indústria de comunicações, indústria de IPTV e indústria de telefonia móvel, você entende as necessidades da indústria. Portanto, as pessoas que são líderes são principalmente aplicativos.
3. Seja motivado. Na verdade, não quero chamar isso de "ser um motorista", mas quero chamá-lo de "ser um sistema de baixo nível". Feito isso, isso matará todas as indústrias. Eu trabalhei por vários anos e fiz telefones celulares, IPTV e TV de conferência, mas esses produtos não fazem diferença para mim porque eu faço apenas a camada inferior. O negócio deles não tem nada a ver comigo. Quando há um problema com o aplicativo e eles não conseguem resolvê-lo, darei a eles uma ideia da perspectiva do kernel e fornecerei as ferramentas. Pessoalmente, acho que sou um especialista técnico na direção do desenvolvimento da camada inferior.
4. Na verdade, não há limite entre fazer a camada inferior ou fazer o aplicativo. Se você tiver a experiência da camada inferior, se sentirá muito à vontade ao fazer a aplicação. Com experiência em negócios, você pode conhecer a camada inferior e logo poderá formar uma equipe.
De volta à questão de como aprender. O que está incluído no sistema subjacente do Linux embarcado? Não se preocupe, você saberá dando um exemplo.
1. Quando o computador é ligado, quem exibe essas interfaces? É a BIOS, o que ela faz? Faça algumas verificações automáticas e, em seguida, leia as janelas do disco rígido e inicie-o. Da mesma forma, este BIOS corresponde ao bootloader no Linux embarcado. Este bootloader precisa ler o kernel do Linux no Flash e iniciá-lo.
2. Qual é o propósito de iniciar o Windows? Claro que é um bate-papo online ou algo assim. Onde estão essas ferramentas de Internet e chat? Na unidade C e na unidade D. Portanto, o Windows deve primeiro identificar a unidade C e a unidade D. Nós o chamamos de sistema de arquivos raiz no Linux.
3. O Windows pode reconhecer a unidade C e a unidade D, portanto, deve ser capaz de ler e gravar no disco rígido. As coisas envolvidas são chamadas de drivers. Claro, não é apenas um disco rígido, mas também uma placa de rede, USB e assim por diante. O Linux incorporado pode ler e executar aplicativos do Flash e também deve ter drivers Flash. Claro, não é apenas Flash.
Vamos falar sobre isso primeiro, o LINUX embutido contém quatro partes principais: bootloader, kernel, driver e sistema de arquivos raiz.
Um, bootloader
É um programa de placa simples um pouco mais complicado. Mas não é fácil entender e escrever este programa de placa-base. As ferramentas úteis do Windows enfraquecem nossa capacidade de programação.
Muitas pessoas usam ADS e KEIL assim que jogam embutidos. Você pode responder estas perguntas?
1. Depois de ligar a energia, onde a CPU busca instruções para execução?
Resposta: Geralmente, as instruções são do Flash.
2. Mas o Flash só pode ser lido e não escrito diretamente. Se eu usar variáveis globais, onde estão essas variáveis globais?
Resposta: Variáveis globais devem estar na memória
3. Então, quem coloca as variáveis globais na memória?
Resposta: Você pode responder a um amigo que usa ADS e KEIL há muito tempo? Isso requer "realocação". No ADS ou KEIL, o código de realocação é escrito para você pela empresa que fabrica essas ferramentas. Você já leu isso?
4. A memória é tão grande, como posso saber em qual endereço devo ler o "conteúdo originalmente armazenado em Flash" na memória?
Resposta: Este endereço é determinado por "script de link", existem arquivos dispersos no ADS e arquivos semelhantes no KEIL. Mas, você estudou isso?
5. Você disse que realocação é copiar um programa do Flash para a memória, para que esse programa possa ler o Flash? Resposta: Sim, você precisa ser capaz de operar o Flash. Claro que não só isso, mas também acertar o relógio para fazer o sistema funcionar mais rápido e assim por diante. Vamos perguntar e responder aqui primeiro, o bootloader, um programa de placa vazia, na verdade tem três pontos principais:
1. Operação do hardware
2. Compreensão dos processadores do sistema ARM
3. Os conceitos básicos do programa: realocação, pilha, segmento de código, segmento de dados, segmento BSS e assim por diante.
Para a operação do hardware, você precisa ver o diagrama esquemático e o manual do chip. Isso requer um certo conhecimento de hardware. Não requer que você seja capaz de projetar hardware, mas pelo menos entendê-lo; não requer ser capaz de compreender circuitos analógicos, mas compreender circuitos digitais. Aprendi essa habilidade na escola. Os dois livros (o título do livro que esqueci) são suficientes. Mas duvido que você tenha paciência para terminar de ler esses dois livros. Não sei se existe um livro mais rápido agora. Se você quiser fazer isso rápido, deixe isso de lado primeiro, e se você não entender, basta perguntar ao Google e postar.
Além disso, o manual do chip deve ser lido, não procure o chinês, olhe apenas o inglês. Foi muito doloroso no início, mas depois, uma vez que a gramática e o vocabulário são familiares, é fácil ler qualquer manual de chip.
Para compreender os processadores de sistema ARM, consulte o de Du Chunlei. Ele fala sobre instruções de montagem, modos de exceção, MMU, etc. Apenas essas 3 partes do conteúdo precisam que você entenda.
O conceito básico do programa, é claro, o rei é olhar para os princípios de compilação. Infelizmente, este tipo de livro é definitivamente do nível de livro celestial. Eu aconselho você a não assistir a menos que você seja um super gênio. Apenas observe o e o primeiro vídeo que escrevi, não se preocupe, não gaste dinheiro. Seguindo o vídeo e fazendo experimentos relacionados ao hardware, esses conceitos se tornarão claros. Não encontrei o segundo conjunto de livros ou vídeos que falam sobre esses conceitos, o que me permite gabar-me disso às cegas. Para o bootloader, assisti pela primeira vez quando estava estudando e depois escrevi o programa sozinho e fiz todos os experimentos em vários hardwares, como GPIO, clock, SDRAM, UART e NAND. Se você torná-los claros, é fácil entender o u-boot agrupando-os. Resumindo, para entender o diagrama esquemático do hardware e o manual do chip, você precisa encontrar as informações por conta própria. Para o resto, basta seguir a lista de capítulos do e a primeira fase do vídeo para aprender.
Dois, o kernel
Aqueles que desejam começar devem pular o aprendizado do kernel primeiro e aprender como escrever drivers diretamente.
Para se tornar um mestre, o kernel deve ter um conhecimento profundo. Observe que estou falando sobre compreensão, não tenho nenhuma esperança extravagante de escrever um kernel.
Para entender o mecanismo de agendamento, mecanismo de gerenciamento de memória, mecanismo de gerenciamento de arquivo, etc. dentro.
Recomende dois livros:
1. Leia, por favor, leia o livro fino (a sociedade flutuante enfatiza a velocidade)
2. Escolha ler, quer saber qual seção ler qual seção
Tres, dirija
O driver consiste em duas partes: a operação do próprio hardware e a estrutura do driver.
É o hardware novamente. Ainda é necessário entender o diagrama esquemático e o manual do chip. Pratique mais. Por falar no framework do driver, existem alguns livros para apresentá-lo. LDD3, o livro escrito por um estrangeiro, apresenta muitos conceitos e vale a pena ler. No entanto, seu papel se limita à introdução de conceitos. Basicamente, usei-o para me familiarizar com os conceitos antes de começar e, em seguida, joguei fora depois de começar.
A introdução mais abrangente ao driver deve ser a de Song Baohua. Para ser sincero, só li o catálogo. Muitas pessoas disseram que sim, recomendo aqui.
Se você quer entender uma determinada área em profundidade, é definitivamente uma recomendação super 5 estrelas. Você não espera ler, mais de 1,800 páginas, dois volumes para cima e para baixo. Quando eu não tiver certeza sobre uma determinada área, irei examiná-la. Qualquer parte deste livro pode abranger duzentas ou trezentas páginas, o que é muito detalhado. E para levá-lo a analisar o código-fonte do kernel com um determinado objetivo. Toma o Linux 2.4 como exemplo, mas o princípio é o mesmo, e também é aplicável a outras versões do Linux. Alguma outra introdução? Claro que há, a segunda edição do Wei Dongshan Linux Video. O "Manual Completo de Desenvolvimento de Aplicativos Embedded Linux" não fala muito sobre o driver e não é profundo o suficiente.
Tente escrever um driver para todo o hardware envolvido em sua placa de desenvolvimento. Se você tiver um problema, deve primeiro "pensar dolorosamente". No processo de pensamento, você conectará muitos conhecimentos irrelevantes e, finalmente, os transmitirá.
Quarto, o sistema de arquivos raiz
Você já pensou sobre essas duas questões:
1. Para os produtos feitos pelo Linux, alguns são usados para monitoramento, alguns são usados como telefones celulares e alguns são usados como tablets. Então, depois que o kernel é iniciado, após montar o sistema de arquivos raiz, qual aplicativo deve ser iniciado?
Resposta: O kernel não sabe ou não se importa com qual programa do usuário deve ser iniciado. Ele apenas inicia o aplicativo init, que corresponde a / sbin / init.
Obviamente, este aplicativo deve ler o arquivo de configuração e iniciar o programa do usuário (monitoramento, interface manual, interface do tablet, etc.) de acordo com o arquivo de configuração. Esta questão nos lembra que o conteúdo do sistema de arquivos tem algumas convenções, como / sbin / init, um arquivo de configuração é necessário.
2. Você já pensou em quem implementou o printf usado nos programas hello e world que você escreveu?
Resposta: Esta função não é implementada por você, mas por uma função de biblioteca. Quando ele é executado, ele precisa encontrar a biblioteca.
Esta pergunta nos lembra que ainda existem bibliotecas no sistema de arquivos. Aqui está uma pergunta e resposta simples. Se você quiser saber mais, você pode olhar o init.c do busybox para saber o que o processo init faz. Claro, você também pode ver o capítulo sobre a construção do sistema de arquivos raiz no .
Minha experiência de aprendizagem
1. Quando eu estava na escola, me formei em física e eletrônica. Na verdade, eu não ensinei como projetar circuitos no curso, apenas ensinei alguns conhecimentos sobre circuitos eletrônicos. O design do PCB foi ensinado por mim mesmo em laboratório. Eu apenas projetei uma placa de 2 camadas e agora quase esqueço. Mas mantém a capacidade de ler o diagrama esquemático e o manual do chip.
2. Eu me formei em software e estou muito interessado em design de software, mas aprendi apenas a linguagem C e banco de dados. Fiz muitas perguntas de competição com interesse. Não posso participar da competição, mas tenho um bom conhecimento da linguagem C.
3. No laboratório, na primeira empresa, projetei algumas placas PCI simples e escrevi o driver do Windows
4. Na segunda empresa, usando 51 microcomputadores de chip único como telefone para carros, começou a embarcar na estrada do software puro.
5. Comecei a sentir as deficiências do microcomputador de chip único. Pedi demissão por meio ano para aprender Linux a portas fechadas, começando com como operar o chapéu vermelho. A etapa é examiná-lo primeiro, depois escrever o programa da placa vazia para operar o hardware e, em seguida, analisar o u-boot. Ao mesmo tempo, tenho algum conhecimento da estrutura do LINUX.
Ao escrever quadros vazios, é recomendável que você aumente sua compreensão das interrupções. O kernel usa interrupções para completar várias funções.
6. Depois de analisar o u-boot, inicie a programação do driver simples. Neste momento, a habilidade ainda é muito fraca.
7. Comecei a trabalhar na ZTE, trabalhei por 2 anos, escrevia todos os tipos de drivers, resolvia todos os tipos de problemas (problemas de direção, ajudando a localizar problemas de aplicativos), e a habilidade foi diminuída.
|
Digite o e-mail para obter uma surpresa
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> albanês
ar.fmuser.org -> árabe
hy.fmuser.org -> armênio
az.fmuser.org -> Azerbaijão
eu.fmuser.org -> Basco
be.fmuser.org -> bielorrusso
bg.fmuser.org -> búlgaro
ca.fmuser.org -> catalão
zh-CN.fmuser.org -> Chinês (simplificado)
zh-TW.fmuser.org -> chinês (tradicional)
hr.fmuser.org -> croata
cs.fmuser.org -> checo
da.fmuser.org -> dinamarquês
nl.fmuser.org -> holandês
et.fmuser.org -> estoniano
tl.fmuser.org -> filipino
fi.fmuser.org -> finlandês
fr.fmuser.org -> francês
gl.fmuser.org -> galego
ka.fmuser.org -> georgiano
de.fmuser.org -> alemão
el.fmuser.org -> grego
ht.fmuser.org -> crioulo haitiano
iw.fmuser.org -> hebraico
hi.fmuser.org -> Hindi
hu.fmuser.org -> húngaro
is.fmuser.org -> islandês
id.fmuser.org -> indonésio
ga.fmuser.org -> irlandês
it.fmuser.org -> italiano
ja.fmuser.org -> Japonês
ko.fmuser.org -> coreano
lv.fmuser.org -> letão
lt.fmuser.org -> Lituano
mk.fmuser.org -> macedônio
ms.fmuser.org -> malaio
mt.fmuser.org -> maltês
no.fmuser.org - norueguês
fa.fmuser.org -> persa
pl.fmuser.org -> polonês
pt.fmuser.org -> português
ro.fmuser.org -> romeno
ru.fmuser.org -> russo
sr.fmuser.org -> Sérvio
sk.fmuser.org -> Eslovaco
sl.fmuser.org -> esloveno
es.fmuser.org -> espanhol
sw.fmuser.org -> Swahili
sv.fmuser.org -> sueco
th.fmuser.org -> Tailandês
tr.fmuser.org -> turco
uk.fmuser.org -> ucraniano
ur.fmuser.org -> Urdu
vi.fmuser.org -> vietnamita
cy.fmuser.org -> Galês
yi.fmuser.org -> iídiche
FMUSER Transmitir vídeo e áudio sem fio mais fácil!
Contato
Endereço:
No.305 Sala HuiLan Edifício No.273 Huanpu Road Guangzhou China 510620
Categorias
Newsletter