Mini2440 — Linux from scratch com Buildroot

- por Sergio Prado

Categorias: Buildroot, Linux, Mini2440 Tags: , ,

O Buil­d­root é um dos mais usa­dos sis­temas de build para sis­temas embar­ca­dos. Com ele podemos gerar todo o tool­chain de cross-compilação para deter­mi­nada arquite­tura, com­pi­lar o ker­nel e gerar o rootfs.

Então vamos lá, mãos à obra!

PREPARANDO O BUILDROOT

O primeiro passo é baixar o buil­d­root na página do pro­jeto aqui e descompactá-lo em um diretório qual­quer na sua máquina.

Você vai pre­cisar tam­bém do ker­nel para a mini2440. O ker­nel disponível na página de down­loads do pro­jeto não irá fun­cionar, porque o JFFS2 não esta habil­i­tado por padrão, e tam­bém porque são necessárias algu­mas alter­ações no dri­ver da MTD para ele fun­cionar com o U-boot. Eu fiz toda estas alter­ações e disponi­bi­lizei aqui. Entre no diretório prin­ci­pal do buil­d­root, crie uma pasta chamada “dl” e copie o ker­nel para lá.

CONFIGURANDO O BUILDROOT

Agora vamos con­fig­u­rar o buil­d­root para gerar cor­re­ta­mente o tool­chain e as ima­gens do ker­nel e do rootfs para a mini2440. No diretório prin­ci­pal do buil­d­root, exe­cute o comando “make menu­con­fig”, e con­fig­ure de acordo com as opções abaixo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Target Architecture
    [*] arm
 
Target Architecture Variant
    [*] arm920t
 
Target ABI:
    [*] EABI
 
Toolchain
    Kernel Headers
        (X) Local Linux snapshot
 
Target Filesystem options
    [*] jffs2 root filesystem
    Flash type
        (X) NAND flash with 2kB page and 128kB erase
Kernel
    [*] Linux Kernel
        Kernel version
            (X) Same as toolchain kernel headers
    Defconfig name
        mini2440

Você pode ainda sele­cionar os pacotes que quiser na opção “Pack­age Selec­tion for the tar­get”, e o resto man­ter como padrão. Após con­fig­u­rar, sal­var e sair.

COMPILANDO O BUILDROOT

Para com­pi­lar basta exe­cu­tar o comando “make”. Prepare-se porque o processo é bem demor­ado. O buil­d­root irá baixar e com­pi­lar todos os pacotes necessários para gerar o tool­chain, depois com­pi­lar o ker­nel e gerar o rootfs.

Na minha máquina tive um prob­lema ao com­pi­lar o tool­chain, onde a função get­line() do arquivo “output/toolchain/linux-2.6/scripts/unifdef.c” estava con­fli­tando com outra função get­line() da glibc insta­l­ada na minha máquina. Alterando get­line() para get­Line() no arquivo “output/toolchain/linux-2.6/scripts/unifdef.c” resolveu o problema.

Toda a com­pi­lação é feita den­tro do diretório “out­put”, e os seguintes diretórios são cri­a­dos lá dentro:

  • build: onde o ker­nel e os pacotes do rootfs são compilados;
  • host: fer­ra­men­tas para cross-compilar os pacotes;
  • images: ima­gens ger­adas do ker­nel e do rootfs;
  • stag­ing: tool­chain gerado;
  • stamps: diretório de con­t­role do buildroot;
  • tar­get: estru­tura de diretórios e arquivos do rootfs final;
  • tool­chain: onde o tool­chain foi com­pi­lado.

CORRIGINDO A CONFIGURAÇÃO DA CONSOLE

Após a com­pi­lação, as ima­gens já estarão prontas para serem car­regadas na mini2440, mas antes pre­cisamos cor­ri­gir a con­fig­u­ração da con­sole. Edite o arquivo “output/target/etc/inittab”, comente a linha com “ttyS0” e insira outra linha com “ttySAC0”, con­forme abaixo:

#ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100 # GENERIC_SERIAL
ttySAC0::respawn:/sbin/getty -L ttySAC0 115200 vt100 # GENERIC_SERIAL

Com­pile nova­mente com o comando “make”. As ima­gens finais do ker­nel (uIm­age) e do rootfs (rootfs.jffs2) estarão em “output/images”.

GRAVANDO A IMAGEM

O processo de gravação da imagem é o mesmo que usamos para o Emde­bian neste post aqui. Preste atenção ape­nas nos taman­hos dos arquivos no momento da exe­cução dos coman­dos de gravação na flash.

Agora temos um Linux enx­uto, com boot bem rápido (5 segun­dos para apare­cer a con­sole), e que podemos usar como base para estu­dos ou mesmo pro­je­tos com­er­ci­ais.

mini2440 buildroot(1) Mini2440   Linux from scratch com Buildroot

Um abraço!

Ser­gio Prado

  • Marcelo

      Olá Sér­gio, exce­lente post!

  • http://www.meiobit.com Mar­cel­lus

    Olá, Ser­gio. Esta ver­são do ker­nel parece ter movido o suporte ao PWM do 2440 para a árvore prin­ci­pal. É isso mesmo? Como aces­sar o “buzzer” agora?
    []s
    Marcellus

    • http://sergioprado.org ser­gio­prado

      Olá Mar­cel­lus,

      Não cheguei a tes­tar isso. Talvez então voce tenha que mexer no kernel.

      Abraços!

  • http://www.meiobit.com Mar­cel­lus

    Bem, para evi­tar transtornos, baixei a ver­são 2.6.32.2 do site da Friendl­yARM e usei com o Buil­d­root. Tudo fun­cio­nando agora… ;)

  • Tom

    Boa tarde sér­gio, falei com vc em outro post e vc me indi­cou esse. Bom na real­i­dade já gerei um buil­d­root e o ambi­ente cross-compile, porém para isso usei o arm­strong com qt, pq minha neces­si­dade é desen­volver um soft­ware em ambi­ente grá­fico. Já con­sigo com­pi­lar api­cações para con­sole em C e exe­cu­tar no Mini2440, porém não con­segui ainda com­pi­lar uma apli­cação para ambi­ente grá­fico para o mini.

  • http://sergioprado.org ser­gio­prado

    Olá Tom!

    Em teo­ria, basta habil­i­tar as bib­liote­cas do Qt no buil­d­root, e con­fig­u­rar um pacote no mesmo para ser cross-compilado e incluído na imagem. Você fez isso? 

    Abraços!

  • Tom

    Está é a parte que está pegando… Não fiz isso, não achei como fazer isso ainda.

  • http://sergioprado.org ser­gio­prado

    Olá Tom,

    Para habil­i­tar o Qt no buil­d­root, no “make menu­con­fig”, habilitar

    Pack­age selec­tion for the tar­get
        Graphic libraries and appli­ca­tions
            [X] Qt

    Para con­fig­u­rar um pacote den­tro do buildroot:

    http://buildroot.uclibc.org/buildroot.html#add_packages

    Um abraço!

  • Dou­glas

    Olá Ser­gio,
    Gostaria de primeira­mente parabeniza-lo, pela ini­cia­tiva de indicar o cam­inho das pedras e alguns con­ceitos para a ini­cação da con­sturção e desen­volvi­men­tos de sis­temas embar­ca­dos em platafor­mas ARM 32 bits uti­lizando linux. São posts real­mente inter­es­santes, e utéis, pra quem está começando e até mesmo pra quem já con­hece e tem algu­mas dúvi­das.
     
    Gostaria de saber mais detal­hes, sobre as altereçãos no dri­ver da  MTD para ele fun­cionar com o U-boot, e como habil­i­tar o JFFS2 do ker­nel.

     
    Att
     
    Dou­glas

    • http://sergioprado.org ser­gio­prado

      Olá Dou­glas,

      Para habil­i­tar o JFFS2 entrar no diretório do ker­nel e executar

      make menu­con­fig ARCH=arm

      E então habil­i­tar a opção:

      Filesys­tems
      [*] Mis­cel­la­neous filesys­tems
      [*] Jour­nalling Flash File Sys­tem v2 (JFFS2) support

    • http://sergioprado.org ser­gio­prado

      Para con­fig­u­rar a MTD, você deve alterar o arquivo “arch/arm/mach-s3c2440/mach-mini2440.c”.

      Pro­cure pela estru­tura “friendly_arm_default_nand_part”. Os val­ores dos cam­pos name, size e off­set devem refle­tir exata­mente a con­fig­u­ração da mtd que você tem no uboot.

      Um abraço!

  • Luciano

    E sse equipa­mento( Kit ) MIni 2440 é para desen­volvi­mento embar­cado?
    Gostaria de saber mais sobre ele, tens alguma  mate­r­ial para me indicar? Onde com­pro este kit, e que mod­elo seria necessário para ini­ciar?
    Obrigado!

    • http://sergioprado.org ser­gio­prado

      Olá Luciano,

      Sim, este equipa­mento é voltado para desen­volvi­mento de sis­temas embar­ca­dos. No site do pro­jeto tem bas­tante doc­u­men­tação (http://www.friendlyarm.net/downloads), e aqui no meu blog já escrevi alguns arti­gos sobre ela (http://www.sergioprado.org/?s=mini2440).

      Pro­cure pelo kit no site do Ebay.

      Um abraço!

  • Thi­ago

    So pra con­star aqui caso alguem tenha o mesmo prob­lema que eu.
    o comando “make menu­con­fig” nao deu certo. usei o comando “make con­fig” e acho que atingi o obje­tivo.
    (foi muita ten­ta­tiva e erro ate desco­brir isso!)

  • Thi­ago

    Olá Ser­gio.
    des­culpe inco­modar nova­mente, mas me apare­ceu 2 duvi­das:
    – uma vez que eu instalo o buil­d­root, como eu faço a par­tir de agora pra escr­ever um codigo em lin­guagem C e com­pi­lar cruzado pra rodar na placa?
    – ten­tei de todas as maneiras enviar a imagem do buil­d­root pra placa via tftp(conforme ensina no outro post pro emde­bian) e nao con­segui mesmo lendo var­ios tuto­ri­ais na net. sera que existe uma maneira mais facil(pela usb ou pela ser­ial)?
    des­culpa inco­modar nessa ves­pera de ano novo(falta 1 hora pra 2011!)
    brigado mais uma vez e feliz ano novo

  • http://sergioprado.org ser­gio­prado

    Olá Thi­ago, como vai?

    Acho que tenho dois posts que podem te ajudar:

    Como usar o NFS para copiar uma apli­cação cross-compilada e tes­tar no kit mini2440:
    http://www.sergioprado.org/2010/12/27/mini2440-montando-rootfs-no-linux-via-nfs/

    Como cross-compilar uma apli­cação:
    http://www.sergioprado.org/2010/12/30/mini2440-compilando-aplicacoes-e-device-drivers/

    Um abraço,

    Ser­gio Prado

  • Thi­ago

    Ola Ser­gio,
    final­mente con­segui insta­lar o buil­d­root.
    qual eh a senha e o login do buildroot?

    • http://sergioprado.org ser­gio­prado

      Olá Thi­ago,

      Usuário “root” e senha vazia.

      Abraços!

  • Thi­ago

     
    obrigado!

  • Thi­ago

    Ola Ser­gio,
    ja tenho meu buil­d­root no minha placa, con­segui cross-compilar o pro­grama “hello world” ‚tran­feri o exe­cu­tavel por pen­drive para a placa ‚  exe­cutei a apli­ca­cao e na tela do hipert­er­mi­nal (no meu pc) apare­ceu o hello world. Fun­cio­nou per­feita­mente!  porem, pre­ciso fazer o hello world apare­cer na tela do LCD da placa(assim como vou pre­cisar usar a cam­era e o touch). Como faco pra fazer apli­ca­coes usando o LCD  da placa?
    des­culpe inco­modar nova­mente,
    agradeco desde ja!

    • http://sergioprado.org ser­gio­prado

      Olá Thi­ago!

      Primeira­mente você vai pre­cisar escol­her uma inter­face grá­fica para usar. Sugiro o Qt. Infe­liz­mente não tenho nen­hum artigo ainda falando sobre isso (esta na minha lista). Você terá que bus­car infor­mações na inter­net (busque algo como “cross-compiling qt”).

      Um abraço!

  • Diogo

    Olá Ser­gio,
     
    Estou com um prob­lema na minha mini2440, agradeço muito se puder me dar alguma dica!
    Exe­cutei todos os pas­sos deste post, mas adi­cionei suporte à QT na minha con­fig­u­ração. Porém, uti­lizando os fontes do ker­nel que você disponi­bi­li­zou o meu LCD de 7″ não fun­cio­nou, nem com o arqu­mento “mini2440=1tb”. Então baixei o ker­nel disponi­bi­lizado no site da Friendl­yArm, con­fig­urei para o meu dis­play, alterei o dri­ver da MTD, adi­cionei suporte a JFFS2 e recom­pilei. Depois disso, sub­sti­tuí ape­nas o ker­nel no meu kit. Com isso o dis­play fun­cio­nou e con­segui rodar algu­mas apli­cação em QT.
    O prob­lema é que o touch­screen não está dando sinal de vida. Tem algum prob­lema em o meu rootfs ter sido mon­tado com um deter­mi­nado ker­nel e eu uti­lizar outro na placa?
    Abraço!

    • http://sergioprado.org ser­gio­prado

      Olá Diogo,

      Você pre­cisa ver se o dri­ver do touch esta car­regado. Talvez pre­cise tam­bém habil­i­tar alguma coisa no buil­d­root. Ainda não mexi com o touch, não sei te pre­cisar as depen­den­cias para a inter­face touch do kit fun­cionar cor­re­ta­mente. Se desco­brir, poste a solução aqui.

      Abraços!

  • tung­pham

    Great post Ser­gio!
    i can use buil­d­root now, but how can i use key­board to login. i just only see login screen in my 3.5″ lcd screen, when i plug usbkey­pad into usb port and try to promt user and pass­word, but it seems linux cant get input from my key­pad.
    Thanks!

    • http://sergioprado.org ser­gio­prado

      Hi tung­pham,

      I have always used my con­sole to log in. I have never tried to login using a USB key­board. Maybe there is a mod­ule miss­ing from the ker­nel. When you plug the key­board on the USB inter­face, check “dmesg” on con­sole to see if it is iden­ti­fied prop­erly. Let me know the results.

      Best regards.

  • tung­pham

    Hi ser­gio.
    I tried SP2 key­board —[sp2/usb]—-> usb­port mini2440 and there is only generic usb device in dmesg, no key­board, When i tried by usb key­board it’s works :).
    any­way, how to use con­sole to logon the sys­tem, i only see login screen on my 3.5 TFTLCD, not on my PC’s console

    • http://sergioprado.org ser­gio­prado

      Thats great tungpham!

      Did you change /etc/inittab as I have men­tioned in my arti­cle? You need to do this to have you a login prompt on your console.

      Best regards.

  • Eduardo

    Olá Sér­gio,

    Estou ten­tando com­pi­lar o ker­nel 2.6.32.2 do site friendl­yarm e adi­cionei o suporte a jffs2 usando o make menu­con­fig no ker­nel. Depois fui até o arquivo mach-mini2440.c e deixei o mtd iden­tico a do meu u-boot.

    Com­pila dire­it­inho, o ker­nel car­rega exibindo a ver­são 2.6.32.2, vejo o car­rega­mento de diver­sos dri­vers, aparece o desenho do pin­guim na tela porém com o back­light apa­gado e depois disso comeca uma série de prob­le­mas com o jffs2 aparente­mente quando o ker­nel tenta mon­tar o root. As vezes chega a car­regar o login, mas qual­quer comando ja dis­para nova­mente uma infinidade de erros com o jffs2.

    Você tem idéia do que pode estar acon­te­cendo? Você teria esse ker­nel ajus­tado para o mini.

    Reparei que no seu ker­nel mod­i­fi­cado para o jffs2 no arquivo mach-mini2440.c não apare­cem as entradas para o MTD. Fiquei sem enten­der porque você disse que dev­e­riam ser inseri­das ou cor­rigi­das essas entradas e no seu ker­nel não aparece.

    Até logo e obrigado

    • http://sergioprado.org ser­gio­prado

      Olá Eduardo,

      Se o ker­nel ini­ciou é porque vocês fez cor­re­ta­mente as alter­ações das par­tições da MTD. Esse prob­lema do JFFS2 eu vi quando ten­tei rodar o Android, e imag­inei que fal­tasse algo no ker­nel do Android para o dri­ver do JFFS2 fun­cionar na mini2440. Mas não cheguei a debugar este prob­lema. Minha sug­estão é para você dar uma olhada no dri­ver, a par­tir das men­sagens de erro, e ten­tar iden­ti­ficar o prob­lema. Um ponto de par­tida talvez seja com­parar o dri­ver do ker­nel antigo com este.

      Um abraço!

  • tung­pham

    hi Ser­gio
    i changed /etc/initab as you men­tioned, but when i make, the init­tab was reset to ttyS0::respawn:/sbin/getty –L ttyS0 115200 vt100 # GENERIC_SERIAL

    after dig­ging into menu­con­fig, i noticed that there are some options related to console

    Tar­get options
    Generic ser­ial port con­fig –>
    Ser­ial port to run getty on –>
    ( ) none
    ( ) ttyS0
    ( ) .….
    (X) ttySAC0
    ( ) .……
    Bau­drate to use –>
    ( ) keep ker­nel default
    ( ) 9600
    ( ) 19200
    ( ) 38400
    ( ) 57600
    (X) 115200
    by default you have to change ttyS0::respawn:/sbin/getty –L ttyS0 115200 vt100 # GENERIC_SERIAL

    line in the init­tab file, but if you con­fige like that, you dont have to change init­tab file :)
    any­way, i dont know much about getty and tty
    i see
    tty1::respawn:/sbin/getty 38400 tty1
    tty2::respawn:/sbin/getty 38400 tty2

    in the init­tab, and if i com­ment out these line, i can pass login promt. Could you tell me more about getty and tty com­mand?
    Cheer!

    • http://sergioprado.org ser­gio­prado

      Hi tung­pham,

      It was prob­a­bly recre­at­ing the file when you were com­pil­ing and gen­er­at­ing a new image.

      Getty is the tool that will ini­tial­ize the tty line and invoke the login process (please check http://www.manpagez.com/man/8/getty/). Tty is a linux sub­sys­tem for con­sole devices (here is a good arti­cle about it http://www.linusakesson.net/programming/tty/index.php).

      Best regards!

  • Eduardo

    Obri­gado pela resposta Sér­gio.
    No momento estou descon­fi­ado do buil­d­root, ten­tei recom­pi­lar do jeito que você fez com o seu ker­nel e o sis­tema trava assim que é mon­tado o root(jffs2). Na primeira vez que ten­tei havia dado certo. O mais estranho é que descom­pactei o buil­d­root em uma nova pasta e refiz o processo com­pleto com a exceção de que peguei os arquivos que estavam na pasta dl da ten­ta­tiva ante­rior e joguei na nova para não ter que baixar nova­mente e o sis­tema trava assim que monta o root.
    Tenho dois arquivos da imagem root com­pi­la­dos com as mes­mas opções mas com uma difer­ença de 6 bytes, um fun­ciona e o outro não.
    O prob­lema pra ficar tes­tando é que a com­pi­lação demora quase duas horas.
    Até mais e obri­gado novamente.

    • http://sergioprado.org ser­gio­prado

      Olá Eduardo,

      Prob­lema “sin­gu­lar” você tem em mãos…:)

      Não deixe de postar aqui quando desco­brir a causa.

      Um abraço!

  • Eduardo

    Sér­gio,

    Resolvido o prob­lema, inclu­sive estou rodando o ker­nel 2.6.32.2.
    Não sei exata­mente o que foi porque tomei mais de uma medida de uma vez.
    O que eu fiz foi regravar o u-boot e con­se­quente­mente “zerar” as con­fig­u­rações anti­gas, for­matar a nand e recriar as par­tições.
    Todas as ima­gens que eu havia cri­ado agora funcionam.

    No momento estou apan­hando para ligar o back­light, neste ker­nel 2.6.32.2 ele fica desli­gado.
    Não é a tela que fica em blank porque dá pra ler, mas o back­light fica desli­gado.
    Sig­amos os estu­dos com novos prob­lema a resolver.

    Abraço.

    • http://sergioprado.org ser­gio­prado

      Olá Eduardo,

      Mas é apan­hando que a gente aprende mesmo! :)

      Um abraço!

  • Jorge

    Dica para o pes­soal.
    Inta­lando o pacote (glibc-static)  com o comando (yum install glibc-static).
    Resolve alguns dos erros durante a compilação.

  • Jorge

    Sér­gio,

    Um prob­lema que tenho é que ele nao da o boot soz­inho, eu tenho q entrar, aper­tar (Q) e dig­i­tar (load ram 0x31000000 242360 u) e fazer upload do uboot, ai ele entra, se nao ano funiona.
    Sabe oque pode estar acon­te­cendo?
     
    Att
    Jorge

  • Matheus

    Ser­gio,

    Estou com um prob­lema aqui q não estou enten­dendo. Fiz todos os pro­ced­i­men­tos quando chega no ultimo que é para dar o “boot” para finalizar aparece a seguinte men­sagem “ERROR: can’t get ker­nel image!”. Não sei o que fazer mais.… help!!

    • http://sergioprado.org ser­gio­prado

      Olá Matheus,

      Em que momento esta dando esta men­sagem? Você con­seguiu gravar a imagem do ker­nel na Flash?

      Abraços.

  • Fer­nando Koch

    Olá, Sér­gio.
    Parabéns pelos posts, estou começando a pesquisar sobre o assunto e achei o con­teúdo do seu site muito útil.
    []s, Fernando.

  • jesse

    ola
    tenho o mini 6410. como eu instalo o android nele
    desde ja agredeço

  • nuno

     
    olá Ser­gio,
    tenho estado a tra­bal­har com o Buil­d­root e das duas uma :
    - uso o seu ker­nel (embe­dian) e o touch­sreen não fun­ciona … (é mais recente que o seu);
    - uso as con­fig­u­rações disponi­bi­lizadas para o mini2440 e não con­sigo fazer as alter­ações necessárias no ker­nel para o com­pat­i­bi­lizar com as par­tições da NAND, MTD, etc, …
    será que pode par­til­har os ficheiros que alterou no ker­nel para eu me ori­en­tar (“não me dês o peixe mas ensina-me a pescar” …)?
    obri­gado pelo seu tempo,
    aye!

    • http://sergioprado.org Ser­gio Prado

      Olá Nuno!

      A con­fig­u­ração das par­tições da MTD pode ser feita no arquivo “arch/arm/mach-s3c2440/mach-mini2440.c”, na definição da estru­tura “mini2440_default_nand_part”. Dê uma olhada na con­fig­u­ração das par­tições no U-Boot e use a mesma nesta estru­tura. Qual­quer dúvida me avise.

      Se quiser, disponi­bi­lizei um ker­nel da mini2440 no github. Esta 100% com fun­cional, incluindo o dri­ver do touchscreen.

      https://github.com/sergioprado/Mini2440-Kernel

      Abraços.

  • Alexan­dro D. Almeida

    Pes­soal, depois de muito apan­har do meu mini2440, prin­ci­pal­mente por causa do do LCD W35 que veio na placa que com­prei recen­te­mente e nem é doc­u­men­tado no site, con­segui con­sol­i­dar uma série da patchs para o linux-2.6.39 e disponi­bi­lizei no seguinte link. 
    http://linux-2–6-39-mini2440.googlecode.com/files/mini2440-patchs.tar.bz2

    • http://sergioprado.org Ser­gio Prado

      Legal Alexan­dro!

      Abraços.

  • Joao

    Ola Sér­gio. Como é a primeira vez que escrevo, aproveito para parabenizá-lo pelo ótimo tra­balho. O con­teudo e didática uti­lizado é impres­sio­n­ante.
    Tenho uma dúvida: Pre­ciso com­pi­lar o mplayer no buil­d­root para arm926. O buil­d­root ja tenho insta­l­ado e con­fig­u­rado porém estou com muitas duvi­das na hora de com­pi­lar o mplayer visto que é a primeira vez que uti­lizado esse ambi­ente. Voce pode­ria explicar passo a passo como fazer essa tarefa? Talvez um exem­plo de cross com­pi­lar (não nec­es­sari­a­mente o mplayer) um pro­grama uti­lizando buil­d­root.
    Muito obrigado!

  • Alexan­dro D. Almeida

    Olhe eu de volta aqui.

    Resolvi criar um fork do buil­d­root com as alter­ações que fiz para o meu mini2440 e subi no Github, quem tiver inter­esse:
    https://github.com/xandroalmeida/Mini2440-Buildroot
    Com­pila um ker­nel 2.6.39.4 com patch para o recente dis­play W35 e um root sys­tem com suporte a ssh
    Talvez ainda pre­cise alterar alguma coisas para o touch­screen e som, mas deve ver estes itens em breve

  • Diego Mar­cel

    Olá Sér­gio!

    Gostaria de uti­lizar o Linux com tempo real na mini2440. As alter­ações são só no ker­nel ou há algo para ser alter­ado no buil­droor?? Vc sabe qual o path mais recomen­dado? Ou onde posso con­seguir um ker­nel já alter­ado?
    Abraços

    • http://sergioprado.org Ser­gio Prado

      Olá Diego,

      As alter­ações são no ker­nel mesmo. O pro­jeto PREEMPT_RT [1] é com­posto por um con­junto de patches cujo obje­tivo é trans­for­mar o Linux num sis­tema de tempo real. Dá uma lida tam­bém neste doc­u­mento da Free-electrons [2]. Ele explica muito bem toda a teo­ria por trás do Linux como sis­tema de tempo real.

      [1] https://rt.wiki.kernel.org/
      [2] http://free-electrons.com/doc/embedded_linux_realtime.odp

      Um abraço.

  • Diego Mar­cel

    Oi Sér­gio! Muito obri­gado pelas informações.

    Infe­liz­mente o rt.wiki.kernel.org está fora do ar há algum tempo. Segundo o doc­u­mento da Free-electrons os patches do preempt_rt não são com­patíveis com o linux 2.6.32, jus­ta­mente o disponi­bi­lizado no site friendl­yarm.
    Sabes onde posso con­seguir uma ver­são com­patível?
    Abraços,

    Diego

  • http://sergioprado.org Ser­gio Prado

    Olá Diego,

    É ver­dade. Você vai pre­cisar dar uma olhada se alguém já não fez este tra­balho, ou então você mesmo por­tar os patches da ver­são 2.6.33 para a ver­são 2.6.32.

    Um abraço.

  • Diego Mar­cel

    Olá Sér­gio!
    Pois é, já pro­curei em vários sites, em foruns, em gits e blogs mas não encon­trei ver­sões com­patíveis. A maio­ria dos sites redi­re­cionam o patch para o rt.wiki.kenel.org. Con­segui baixar o patch para 2.6.33 e só con­segui encon­trar ver­sões para a mini2440 da 2.6.34, 2.6.38 e pos­te­ri­ores. O que será mais fácil, por­tar os patches para 2.6.32 ou por­tar a ver­são 2.6.33 para a mini2440??
    abraços!

    • http://sergioprado.org Ser­gio Prado

      Olá Diego,

      Difí­cil saber! Acho que as duas ativi­dades serão tra­bal­hosas. Pelo feel­ing, eu baixaria o ker­nel 2.6.32 orig­i­nal, ger­aria os patches com­para­ndo com o ker­nel da mini2440, e ten­taria aplicar estes patches no ker­nel 2.6.33. Depen­dendo da quan­ti­dade de erros, seguiria este cam­inho. As alter­ação de RT são sem­pre mais com­pli­cadas, e é bem mais fácil come­ter algum erro quando ten­tar por­tar para o ker­nel 2.6.32.

      Depois me diz que cam­inho seguiu.

      Um abraço!

  • Diego Mar­cel

    Olá Sér­gio!

    Encon­trei um RT patch para ver­são 2.6.29 escon­dido num site da red hat! Agora vou rodar o ker­nel 2.6.29 que baixei do site da friendl­yarm com o buid­root e ver se tudo fun­ciona antes de aplicar os patches. Sabes se pre­ciso fazer alguma alteração/correção nesse ker­nel?
    Abraços!

    • http://sergioprado.org Ser­gio Prado

      Olá Diego,

      Não que eu saiba. Nunca usei este ker­nel na mini2440. Depois me avisa se funcionou.

      Um abraço.

  • Diego Mar­cel

    Oi Sér­gio!
    Tive que fazer algu­mas mod­i­fi­cações no menu­con­fig da 2.6.29… usei o seu ker­nel como “mod­elo”. O rootfs eu gerei com o buil­d­root. Minha mini2440 tem 1 GB, mas estou usando u-boot para 256 (disponível no site) pq o do git não fun­cio­nou. Agora estou com o seguinte erro durante a ini­cial­iza­ção, depois de car­regar os dri­vers:
    s3c2410-rtc s3c2410-rtc: set­ting sys­tem clock to 2011-10-23 00:57:55 UTC (131933 1475)
    uncor­rectable error : <3>end_request: I/O error, dev mtdblock3, sec­tor 2
    EXT3-fs: unable to read superblock
    yaffs: dev is 32505859 name is “mtdblock3“
    yaffs: passed flags ““
    yaffs: Attempt­ing MTD mount on 31.3, “mtdblock3“
    yaffs: auto select­ing yaffs2
    block 209 is bad
    yaffs_read_super: isCheck­pointed 0
    VFS: Mounted root (yaffs filesys­tem) on device 31:3.
    Free­ing init mem­ory: 112K
    Warn­ing: unable to open an ini­tial con­sole.
    Ker­nel panic — not sync­ing: No init found.  Try pass­ing init= option to ker­nel.
     
    Esse é o mesmo prob­lema do MTD que vc encon­trou?
    Abraços!

    • http://sergioprado.org Ser­gio Prado

      Olá Diego,

      Não, nunca peguei este erro. Pre­firo o jffs2 ao yaffs.

      Um abraço.

  • Diego Mar­cel

    Olá Sér­gio,
    voltei com mais algu­mas dúvi­das! (nor­mal…)
     
    1 — como faço para criar um con­fig­u­ração default para mini2440 (mini2440_defconfig)? O buil­d­root solic­i­tita esse arquivo durante a descompactação/compilação do ker­nel. Ten­tei criar com o comando “ARCH=arm make mini2440_defconfig”, mas retorna uma men­sagem que há con­fig­u­ração default.
    2 — Posso usar o buil­d­root somente para gerar o file sys­tem?
    3 — Qual o mel­hor pro­ced­i­mento para re-compilar/re-gerar as ima­gens no buid­root?!
     
    Por enquanto, é isso! Daqui a pouco eu volto com mais dúvi­das! hehe­heh.…
    Até mais e obri­gado pela atenção!
    abraços!

    • http://sergioprado.org Ser­gio Prado

      Olá Diego,

      1. Este arquivo já deve exi­s­tir no ker­nel padrão da mini2440. fica em arch/arm/configs/. Basta copiá-lo. Obs: se vocẽ usar um con­fig de um ker­nel em outro ker­nel, pre­cisa rodar o comando “make old­con­fig”.
      2. Sim, sem prob­le­mas. Pode gerar só o tool­chain, só o boot­loader, só o ker­nel, ou só o rootfs. Ou qual­quer com­bi­nação entre eles.
      3. “make clean && make” vai apa­gar e gerar tudo de novo. Se quiser recom­pi­lar ape­nas um pacote e regerar a imagem, dá uma lida na doc­u­men­tação do Buil­d­root abaixo:
      http://buildroot.uclibc.org/buildroot.html#rebuilding_packages

      Um abraço!

  • Alex Moretti

    Prezado Ser­gio
    Tento com­pi­lar o buil­d­root e o ker­nel do linux sug­erido por você, entre­tanto acon­tece o seguinte erro no make­file do linux:
    “erro 1601: as regras implíc­i­tas e nor­mais misturadas”

    Eu ten­tei usar out­ras ver­sões do com­pi­ladores ARMs e buil­droons e sem­pre aparece o mesmo erro.
    Pode­ria me aju­dar neste sentido?

    • http://sergioprado.org Ser­gio Prado

      Olá Alex,

      Pre­ciso de todo o log do processo de com­pi­lação para dar uma olhada. Me envie por email que te ajudo.

      Um abraço.

  • José Nunes

    Olá Ser­gio,

    Estou tendo prob­le­mas quando executo o comando make, aparece uma men­sagem
     “You must install ‘make­info’ on your build machine
    make­info is usu­ally part of the tex­info pack­age in your dis­tri­b­u­tion“
    como eu faço para solu­cionar esse prob­lema já ten­tei de tudo e nada.
    E parabéns pelo site.

    • http://sergioprado.org/ Ser­gio Prado

      Olá José,

      Basta insta­lar o pacote tex­info. Se você esta usando o Ubuntu, o comando abaixo deve resolver:

      $ sudo apt-get install texinfo

      Um abraço.

      • José Nunes

         Valeu Sér­gio,  deu cert­inho aqui.

        Agora o prob­lema é outro, quando dei o pela segunda vez o comando “make” para gerar  a imagem do ker­nel den­tro de “output/images” apare­ceu a seguinte men­sagem:
        “toolchain/kernel-headers/kernel-headers.mk:82: *** No local /home/apolo/Download/buildroot-2012.02/dl/linux-2.6.tar.bz2 found, can­not con­tinue. Are you sure you wanted to enable BR2_KERNEL_HEADERS_SNAP?.  Pare.”

        Sem querer ser chato com tan­tas per­gun­tas, mas você pode me aju­dar com essa ai também?

        E mais uma vez obrigado.

        • http://sergioprado.org/ Ser­gio Prado

          Olá José,

          Você pre­cisa copiar os fontes do ker­nel para o diretório “dl” do Buildroot.

  • José Nunes

     Olá Sérgio,

    Con­segui com­pi­lar o ker­nel exata­mente con­forme seu tuto­r­ial, após isso ten­tei com­pi­lar o rootfs no nar­cis­sus com as car­ac­terís­ti­cas que eu que­ria, ape­sar deu saber que o buil­d­root tam­bém faz isso. Após ter baix­ado o pacote veio um arquivo .tar então extrai e exe­cutei um comando que achei na inter­net para trans­for­mar essa pasta em um arquivo jffs2. O que gerou um arquivo jffs2 maior que quando estava com a exten­são jffs2. Após isso ten­tei insta­lar na minha mini2440 mas quando vou enviar pelo cabo de rede parace que trava no meio do processo e eu não achei nen­hum post com esse prob­lema semel­hante ao meu na inter­net. Nesse meu prob­lema mostra os sustenidos infor­mando que está pas­sando mas de uma hora para outra para.

    Será que você pode­ria me dar mas uma mãoz­inha ai?

    Obri­gado.

    • http://sergioprado.org/ Ser­gio Prado

      Olá José,

      Se começa a trans­ferir é porque esta quase tudo fun­cio­nando. Deve ser alguma coisa com sua infra. Já ten­tou tro­car o cabo de rede? Trans­ferindo um arquivo menor funciona?

      • José Nunes

        Sér­gio,

        Eu segui o seu tuto­r­ial sobre insta­lar o emde­bian (que é um arquivo menor) e deu tudo certo na trans­fer­ên­cia, e sobre o cabo de rede tenho dois aqui e dá a mesma coisa.

    • José Nunes

      Ser­gio,

      Acho que já sei qual o prob­lema, primeiro eu envio para a ram e como o tamanho do arquivo excede o tamanho da ram por isso para o processo de trans­fer­ên­cia, o rootfs que eu gerei tinha mais de 100 mb e a minha ram tem 64 mb. Então como eu pode­ria fazer para trans­ferir essa imagem para a minha placa mini2440?

      Mais uma vez obri­gado pela atenção.

      • http://sergioprado.org/ Ser­gio Prado

        Entendi José. Então é isso mesmo. 

        A única forma do U-Boot escr­ever na flash é pas­sando pela RAM. Neste caso, você pode gravar direto na flash via JTAG, ou dividir seu arquivo em partes menores, e enviar por partes.

  • José Nunes

     Olá Sérgio,

    Con­segui com­pi­lar o ker­nel exata­mente con­forme seu tuto­r­ial, após isso ten­tei com­pi­lar o rootfs no nar­cis­sus com as car­ac­terís­ti­cas que eu que­ria, ape­sar deu saber que o buil­d­root tam­bém faz isso. Após ter baix­ado o pacote veio um arquivo .tar então extrai e exe­cutei um comando que achei na inter­net para trans­for­mar essa pasta em um arquivo jffs2. O que gerou um arquivo jffs2 maior que quando estava com a exten­são jffs2. Após isso ten­tei insta­lar na minha mini2440 mas quando vou enviar pelo cabo de rede parace que trava no meio do processo e eu não achei nen­hum post com esse prob­lema semel­hante ao meu na inter­net. Nesse meu prob­lema mostra os sustenidos infor­mando que está pas­sando mas de uma hora para outra para.

    Será que você pode­ria me dar mas uma mãoz­inha ai?

    Obri­gado.

  • Danilo Pagano

    Alguem teve este erro ao seguir os pas­sos do Sergio?

    chmod: prof_err.h: new per­mis­sions are r-xrwxrwx, not r-xr-xr-xchmod: prof_err.h: new per­mis­sions are r-xrwxrwx, not r-xr-xr-xchmod: prof_err.c: new per­mis­sions are r-xrwxrwx, not r-xr-xr-xmake[3]: ** [prof_err.h] Erro 1make[3]: ** Esperando que out­ros proces­sos terminem.chmod: prof_err.c: new per­mis­sions are r-xrwxrwx, not r-xr-xr-xmake[3]: ** [prof_err.c] Erro 1make[3]: Saindo do diretório ‘/media/Linux/mini2440/buildroot-2012.05/output/build/host-e2fsprogs-1.42.2/misc’make[2]: ** [all-progs-recursive] Erro 1make[2]: Saindo do diretório ‘/media/Linux/mini2440/buildroot-2012.05/output/build/host-e2fsprogs-1.42.2’make[1]: ** [all] Erro 2make[1]: Saindo do diretório ‘/media/Linux/mini2440/buildroot-2012.05/output/build/host-e2fsprogs-1.42.2’make: ** [/media/Linux/mini2440/buildroot-2012.05/output/build/host-e2fsprogs-1.42.2/.stamp_built] Erro 2

    Danilo Pagano.

    • http://sergioprado.org/ Ser­gio Prado

      Me parece um erro de per­mis­são ao com­pi­lar o e2fsprogs. Dá uma olhada no google.

  • Roberto Gomes

    Olá Sér­gio,
    Vamos ver se vc pode me aju­dar…
    é um pouco difer­ente minha situ­ação dos demais e nem sei como procu­rar o prob­lema na inter­net.
    É o seguinte… Tenho um kit mini2440 fun­cio­nando em NFS e tudo ok.
    então eu gostaria de gerar um rootfs novo uti­lizando o buil­d­root. Den­tro do diretório do buil­d­root tem um arquivo configs/mini2440_defconfig que gera uma con­fig­u­ração mín­ima. Se eu man­dar com­pi­lar, o processo vai até o final e parece ok. Mas aí começam umas diferenças.

    No rootfs disponi­bi­lizado pela Friendl­yARM a pasta /dev está ape­nas com o arquivo con­sole. O buil­d­root pos­sui um /dev pop­u­lado.
    Com isso, ao ini­ciar o NFS, o kit começa a escr­ever num arquivo texto /dev/ttySAC0, ao invés de colo­car na porta serial.

    e os out­ros devices tam­bém não são aces­sa­dos… por exem­plo /dev/tty1 não é mais a saída pro LCD.

    Tu tens alguma idéia do que possa estar acon­te­cendo?
    Abraços

    PS:

    Eu gostaria de não ter que alterar o ker­nel, pois fiz algu­mas alter­ações nele para supor­tar SPI pela DMA.

    • http://sergioprado.org/ Ser­gio Prado

      Olá Roberto,

      Como você descom­pactou a imagem do rootfs no diretório do NFS? Você pre­cisa descom­pactar com per­mis­sões de admin (sudo). Se você descom­pactou sem as per­mis­sões necessárias, pode ser que os arquivos de dis­pos­i­tivo no /dev não ten­ham sido descom­pacta­dos corretamente.

      Abs.

  • Thi­ago

    Sér­gio, o kit Micro2440 é igual ao Mini2440, a difer­ença é que o core (ARM + RAM +FLASH) é sep­a­rado (stamp mod­ule) da placa SDK. Que­ria saber se con­sigo exe­cu­tar o build root from scratch nesse kit (micro2440) sem prob­le­mas. Saberia me dizer?

    • http://sergioprado.org/ Ser­gio Prado

      Olá Thi­ago,

      À princí­pio sim, o pro­ced­i­mento deve ser o mesmo.

      • Thi­ago

        Outra dúvida que surgiu rap­i­da­mente aqui. Estou com­prando esse kit e não vou adquirir dis­play LCD. A inster­ação com o Linux pode ser feita dire­ta­mente via inter­face RS-232 e teclado, certo?

        • http://sergioprado.org/ Ser­gio Prado

          É isso aí. Tudo o que você pre­cisa para inter­a­gir com o kit é uma porta serial.

Navegue
Creative Commons Este trabalho de Sergio Prado é licenciado pelo
Creative Commons BY-NC-SA 3.0.