Archive

Archive for the ‘kernel’ Category

N810/N800 + Linux 2.6.33 + Ubuntu Karmic (ubuntu-minimal)

This week I got Ubuntu Karmic(ubuntu-minimal) working on N810/N800 with Linux kernel version 2.6.33. Serial, USB(g_ether) and flash memory are working fine with this version. It’s enough to use console over SSH and test some terminal applications. But it’s going to take time to get it working fully on n8×0 like linux-omap 2.6.29.

—————–

$ ssh ubuntu@10.0.1.10
ubuntu@10.0.1.10’s password:
Linux n810 2.6.33-rc8-07939-g4fe94ed-dirty #149 Fri Feb 26 14:58:22 AMT 2010 armv6l

ubuntu@n810:~$ cat /proc/cpuinfo | grep Hardware
Hardware    : Nokia N810
ubuntu@n810:~$ uname -a
Linux n810 2.6.33-rc8-07939-g4fe94ed-dirty #149 Fri Feb 26 14:58:22 AMT 2010 armv6l GNU/Linux
ubuntu@n810:~$ cat /etc/issue.net
Ubuntu 9.10

—————–

You can download images:

* linux 2.6.33 to n800/n810

* ubuntu karmic minimal image (just console over SSH)

* howto to create your own images

* patches, pkgs and etc

Some notes about Linux 2.6.33 with n8×0:

* Some corrections are necessary to get USB working.

* My kernel configuration define g_ether(USB gadget ethernet) as built-in(CONFIG_USB_ETH=y).

* initfs is not necessary. My kernel configuration changed to bootup directly by flash memory(CONFIG_CMDLINE=”root=1f04 rootfstype=jffs2 console=ttyS2,115200n8″).

* My personal linux-omap tree is available at gitorious

Some notes about ubuntu Karmic with n8×0:

* Generated using rootstock

* Correction to apt works correctly with JFFS2

* Workaround to startup USB interface(IP 10.0.1.10) automatically using udev

* Using openssh-client/server instead of dropbear(lightweight). Dropbear install fails :P

PS:
* Thanks to Stskeeps, luke-jr from #mer at irc.freenode.net !

* rbelem, post done. enjoy it! :D http://www.rbelem.info/

* Doubts, questions or comments? Post it here or use #ubuntu-arm at irc.freenode.net

Categories: kernel, n810, omap, ubuntu Tags:

Preparing Mamona 0.3 - sync with OpenEmbedded (alpha)

Hi folks,

After a long time working on internal projects, we got time to work on Mamona development. The main goal is get it working on OpenEmbedded.git tree and use OE directly.

Main contributions in our patches:

* Linux-omap kernel 2.6.29 working fine N800 and N810

* N8×0 Wlan working with opensource driver(stlc45xx)

* N810 sound working with opensource driver (OMAP ASoC) and ALSA changes

* N810 with Fn key working correctly

* Xserver-kdriver-xomap - xserver-kdrive with custom changes to n8×0

* Linux-omap kernel  2.6.30 to Nokia 770 (unstable)

* Mplayer-Maemo - Mplayer with custom changes to n8×0

* Eve - Web browser based on Webkit-EFL

* Basic SDK chroot (use mamona-chroot)

* Ofono - Open Source telephony

* Antico - lightweight window manager based on Qt X11

* Others minor changes.

Current development:  http://gitorious.org/mamona

I created flashable images that are available on HERE.

Platform developers can use this quick howto to build Mamona latest version.

Now it’s time to review changes and submit to Openembedded.

You can see more pictures and videos of Mamona with N810 using the links

* More pictures of Mamona 0.3 (alpha)

* Videos:

Categories: kernel, mamona, n810 Tags:

Debian Day 09 - Iniciando no desenvolvimento do kernel Linux

Olá pessoal,

Vou realizar uma oficina sobre desenvolvimento do kernel Linux no Debian Day 09 aqui em MAO. Já defini os tópicos que pretendo abordar. Acredito que estes tópicos sejam os primeiros passos para alguém que tem interesse no kernel Linux.

Informações sobre:

* A oficina - http://franciscoalecrim.com/wiki/index.php?title=DebianDay09-AM

* O evento - http://diadebian.org/am/2009/?p=debianday

Na sexta-feira publicarei o material da oficina.

[]’s

Alecrim

Categories: debian, evento, kernel Tags:

fisl10: palestra aprovada

EU VOU !!

EU VOU !!

Confirmei minha presença no FISL10. Serei PALESTRANTE!! \o/

Estou muito feliz com a aprovação de UMA das 3 palestras que submeti.

As palestras recusadas tiveram críticas válidas e concordo com a rejeição das mesmas. :P

Agradeço aos avaliadores !!!

Vejo você no FISL10!!!

Categories: evento, kernel, mamona Tags:

kernel contributions till 2008 04 04

Kernel contributions : OMAP

I should improve it. :P

Categories: kernel, omap Tags:

Proposta de Palestra para o FISL 9.0 – 2008

Proposta de Palestra para o FISL 9.0 – 2008
Autor: Francisco Keppler Silva Alecrim

Curriculum

Formado em Ciência de Computação pela Universidade Federal do Amazonas, onde trabalhou com administração de servidores Linux e Voz sobre IP. Desenvolvedor do Instituto Nokia de Tecnologia, onde trabalha com automação de testes e desenvolvimento do kernel do Linux na plataforma OMAP.

Proposta de palestra

Título:

Configurando um ambiente de desenvolvimento no computador pessoal para a plataforma Linux OMAP.

Público alvo:

Desenvolvedores interessados em iniciar desenvolvimento no kernel do Linux em ambiente embarcado, baseado na plataforma OMAP.

Descrição:

Os microprocessadores OMAP são de propriedade da Texas Instrument e foram desenvolvidos com o objetivo de serem utilizados com aplicações multimídia. A utilização de microprocessadores OMAP pode ser vista em telefones celulares, smartphones, PDAs e handhelds. Algumas das arquiteturas OMAP são dual-core contendo um processador de propósito geral ARM e um ou mais DSP. Os microprocessadores são lançados no mercado em plataformas de desenvolvimento, deste modo, as empresas interessadas podem testar e desenvolver softwares utilizando o processador presente na plataforma de desenvolvimento, antes de iniciarem a fabricação dos futuros dispositivos baseados no OMAP.
O OSK(OMAP5912 Starter Kit) é um exemplo de conjunto que permite o contato com uma plataforma de desenvolvimento OMAP. O OMAP5912 é indicado para terminais portáteis de dados, como dispositivos médicos portáteis e pontos de verificação de preço. A linha de microprocessadores que é indicada para handsets and PDAs possui outras plataformas de desenvolvimento, como o OMAP1611, OMAP1710 e OMAP2420. Todas as plataformas citadas possuem portes do kernel Linux,sendo os procedimentos para teste e utilização do kernel Linux em uma plataforma de desenvolvimento OMAP são muito semelhantes.
A configuração de um ambiente de desenvolvimento para a plataforma OMAP será abordada nesta palestra, incluindo atividades de configuração de u-boot, cross-compiler e kernel OMAP. Além disso, ferramentas que facilitam o trabalho com a comunidade são também apresentadas como o Git, Ctags, Cscope e Vim.
Durante a palestra será realizada uma apresentação do OSK com o kernel do Linux, expondo também a minha experiência de trabalho com a comunidade do Linux-OMAP.
Resumo:

Os microprocessadores OMAP são utilizados em diversos dispositivos móveis como telefones celulares, PDAs, smartphones e handhelds. Esta apresentação descreve os procedimentos de configuração e utilização do kernel Linux em uma plataforma de desenvolvimento OMAP, com demonstrações em um OSK(OMAP5912 Starter Kit).

Referências:

http://en.wikipedia.org/wiki/Texas_Instruments_OMAP

http://www.ti-estore.com/Merchant2/merchant.mvc?Screen=PROD&Product_Code=TMDSOSK5912

http://www.muru.com/linux/omap/

http://focus.ti.com/general/docs/wtbu/wtbugencontent.tsp?templateId=6123&navigationId=11988&contentId=4638

http://en.wikipedia.org/wiki/ARM_architecture

http://tree.celinuxforum.org/CelfPubWiki/OSK

http://elinux.org/OSK

Categories: evento, kernel Tags:

aprendendo linux kernel

Inicie a leitura do Linux Device Drivers (http://lwn.net/Kernel/LDD3/);

Aprenda a compilar um kernel (http://www.falkotimme.com/howtos/debian_kernel2.6_compile/);

Aprenda a testar um kernel de maneira segura,
usando Qemu(http://franciscoalecrim.blogspot.com/2007/08/howto-debian-qemu-running-debian-inside.html);

if (você achar muito ruim fazer isto, fica difícil. você vai ter que fazer isto várias vezes, melhor se acostumar){
ret=-1;
goto erro;
}

Aprenda a trabalhar com modulos, hello_world
(http://osmrc.indt.org/keppler/techday_joinville_2007/ && http://tldp.org/LDP/lkmpg/2.6/html/index.html);

Aprenda um pouco sobre procfs
(http://osmrc.indt.org/keppler/techday_joinville_2007/);

Aprenda sobre drivers
(http://www.freesoftwaremagazine.com/articles/drivers_linux?page=0%2C0);

Aprenda git (http://www.kernel.org/pub/software/scm/git/docs/tutorial.html);

Nao esqueça de continuar lendo o livro
(http://lwn.net/Kernel/LDD3/);

erro:
Vlw!!!
return ret;

Categories: kernel Tags:

Submetendo PATCHES para o Kernel Linux

Baseado em Documentation/SubmittingPatches do código fonte do kernel Linux

1 - Criando e enviando suas mudanças

diff -pruN arvore_original arvore_modificado > meu_patch

2 - Descreva o suas alterações

Seja simples e objetivo, descrevendo os detalhes tecnicos.

3 - Separe as alterações

Se você deseja fazer uma correção em um driver A e depois
uma outra alterção em um driver B. Separe em 2 patches para ficar mais organizado.

4 - Verifique o estilo

Verifique o estilo de seu patch. Utilize scripts/checkpatch.pl para checagem.

5 - Selecione o destino

Procure os mantenedores e envie os patches para as pessoas corretas.

6 - Copie a lista

CC a mailing list.

7 - No MIME, no links, no compression, no attachments. Just plain text.

Não preciso explicar mais nada. :P

8 - Limite de tamanho

Se o seu patch é maior que 40kb, é melhor deixar ele na web e mandar a URL.

9 - Kernel version

Mandar a versao do kernel, caso não seja a current.

10 - Não perca a coragem, re-envie.

11 - Inclua PATCH no subject.

12 - Assine seus patches.

13 - Acked-by para o revisor.

14 - O formato canonical

Minha dica pra isto é USE GIT. Ele já deixa os patches no formato.

git-format-patch -1

Tips and tricks
1 - Leia o CodingStyle
2 - #ifdefs são feios
3 - static inline é melhor que macro
4 - “Faça as coisas o mais simples possível,mas não mais simples” Albert Einstein

Categories: kernel Tags:

Estilo de código no Kernel Linux

Baseado em Documentation/CodingStyle do kernel do Linux

1 - Indentação de 8 characteres

Exemplo:

if (x is true) {        we do y}

2 - Linhas podem possuir apenas 80 colunas

Exemplo:

 printk(KERN_WARNING "Warning this is a long printk with "   "3 parameters a: %u b: %u "   "c: %u \n", a, b, c);

3 - Localização de Chaves
Localizacao das chaves deve ser na ultima coluna do primeira linha e na
primeira coluna da ultima linha

if (x is true) {        we do y}

4 - Nomes de variaveis

LOCAIS devem ser curtas e simples
exemplo: tmp
GLOBAIS devem ser bem descritas, evitando contrações
exemplo: count_active_users()

5 - Evita typedefs.

Evite utilizar typedefs para ponteiros e estruturas, tornando o código
mais complicado.

Exemplo: “struct virtual_container *a;” é muito mais claro do que “vps_t a;”

6 - Funtions devem ser curtas e claras.

Condições:

  6.1 - Dimensões (80x24)  6.2 - Não mais do que 5-10 variáveis.  6.3 - Sem isto, você provavelmente está fazendo algo errado.

7 - Centralizar saída de funções.

GOTO não é péssima prático como muitos dizem.

Exemplo:

int fun(int a){       int result = 0;       char *buffer = kmalloc(SIZE);

       if (buffer == NULL)               return -ENOMEM;

       if (condition1) {               while (loop1) {                       ...               }               result = 1;               goto out;       }       ...out:       kfree(buffer);       return result;}

8 - Comentar é bom, mas NÃO EXAGERE.

Seu código deve ser claro, por isto não coloque no comentário explicações
sobre como seu cógigo funciona.
Veja: Documentation/kernel-doc-nano-HOWTO.txt

9 - Dica pro pessoal que usa emacs.

Eu uso VIM. :P

10 - Configuração no Kconfig

Definições são indentadas com TAB e help com 2 espaços.

11 - Estruturas de dados.

No kernel não tem garbage collector para corrigir suas porcarias.
Se você sujou então vai ter que limpar. Não esqueça que sua estrutura
pode ser acessada por outra thread, por isto lembre de realizar controle
ou você terá um bug.

12 - Macros
Macros devem ser escritas em letras MAIUSCULAS.

13 - Printing messages

Cuidados com erros de escrita nas mensagens.

14 - Alocando memoria

O kernel possui diversas formas de alocação de memória. A forma mais
recomendada de passar o tamanho memória que deve ser alocado é:

p = kmalloc(sizeof(*p), …);

15 - Funções inline

Neste tópico ele desistimula a utilização de funções inline.

16 - Funções retornam valores ou nomes

0 = sucesso
-Exxx = falhou :P

17 - Não re-invente macros

18 - Editor modelines

Não adicionei configurações para o seu editor em código fontes.

Comentários e correções são bem vindos em alecrim@gmail.com

Categories: kernel Tags:

OMAP1610 : improving boot up (PART 1/3 U-BOOT UPGRADE)

Hi all,

I’m working with an OMAP1610 H2 and it was taking a long time to load and uncompress kernel. Eduardo recommended me some things to be done.


BE CAREFUL -
I’M NOT RESPONSIBLE FOR YOUR ACTS. YOU CAN MISS INFORMATION IF YOU DO NOT FOLLOW THE STEPS CORRECTLY.

1 - Upgrade u-boot

- Install scratchbox for cross-compilation.

- Download the last version of u-boot.

- Configure and Compile u-boot

[sbox-arm: ~/applications/u-boot-1.3.0] > make omap1610h2_config && make

- Copy the new u-boot.bin to your tftpboot directory(details here)

$ cp /scratchbox/users/alecrim/home/alecrim/applications/u-boot-1.3.0/u-boot.bin /tftpboot

- Using minicom, access the current u-boot prompt and load the new u-boot

OMAP1610 H2 # tftp 0×10000000 u-boot.bin
TFTP from server 10.0.0.1; our IP address is 10.0.0.2
Filename ‘u-boot.bin’.
Load address: 0×10000000
Loading: ###################
done
Bytes transferred = 93568 (16d80 hex)

The bold number is import, save it.IT’S YOUR U-BOOT HEXADECIMAL!!

- Unlock the flash memory, erase a sector, copy the new u-boot.bin and lock the flash again.

DANGEROUS!! TAKE CARE!!DANGEROUS!! TAKE CARE!!DANGEROUS!! TAKE CARE!!DANGEROUS!! TAKE CARE!!

REPLACE THE BOLD HEXADECIMAL (16d80)!!! PUT YOUR U-BOOT HEXADECIMAL !!!

OMAP1610 H2 # protect off 00000000 0001ffff
Un-Protected 1 sectors

OMAP1610 H2 # era 00000000 0001ffff

Erasing sector 0 … done
Erased 1 sectors

OMAP1610 H2 # cp.b 0×10000000 0×00000000 0x16d80
Copy to Flash…\done

OMAP1610 H2 # protect on 00000000 0001ffff
Protected 1 sectors
OMAP1610 H2 #

Now, you can restart your board and pray for some output on your serial.

references:
http://tree.celinuxforum.org/CelfPubWiki/OSK_2fuboot
http://focus.ti.com/general/docs/wtbu/wtbuproductcontent.tsp?templateId=6123&navigationId=11994&path=templatedata/cm/product/data/omap_1610
http://tree.celinuxforum.org/CelfPubWiki/OSK

Categories: dica, kernel, omap Tags: