本文脉络:

1、SAM9260处理器介绍,单板机配置。

2、SAM-BA的运行机制与applets的修改。

3、修改bootstrap。

4、内核源码获取与打补丁。

5、基于ubuntu的开发环境搭建。

6、内核配置与编译。

7、根文件系统镜像制作,busybox编译与安装。

8、上电,运行内核。

9、第一个app。

10、第一个驱动模块。

enjoy it!

内容将在近期更新!

1、SAM9260处理器介绍,单板机配置。

  处理器介绍嘛,嗯,贴一下atmel官方参数吧:

Flash (Kbytes): 0 Kbytes

Pin Count:217

Max. Operating Freq. (MHz):210 MHz

CPU:ARM926

Max I/O Pins:96

Ext Interrupts:96

USB Transceiver:3

USB Speed:Full Speed

USB Interface:Host, Device

SPI:2

TWI (I2C):1

UART:7

SSC:1

Ethernet:1

SD / eMMC:1

Graphic LCD:No

Video Decoder:No

Camera Interface:Yes

ADC Channels:4

ADC Resolution (bits):10

ADC Speed (ksps):312

Resistive Touch Screen:No

DAC Channels:0

DAC Resolution (bits):0

Temp. Sensor:No

Crypto Engine:No

SRAM (Kbytes):8

EEPROM (Bytes):0

Self Program Memory:NO

External Bus Interface:1

DRAM Memory:sdram

NAND Interface:Yes

picoPower:No

Temp. Range (deg C):-40 to 85

I/O Supply Class:1.8/3.3

FPU:No

MPU / MMU:No / Yes

Timers:6

Output Compare Channels:6

Input Capture Channels:6

PWM Channels:0

32kHz RTC:Yes

Calibrated RC Oscillator:No

  我使用的单板机是公司计量终端部门用的,配置16MiB SDRAM,128MiB NAND,配置是low了点,不过运行linux还好。

2、SAM-BA的运行机制与applets的修改。

  sam-ba的运行机制是这样的:9260 cpu上电之后,内置的boot程序将会从以下地方寻找可执行代码:spi-flash,iic-eeprom,nand,如果都没有,那么boot程序将会挂起,等待上位机sam-ba发送的命令,boot与sam-ba连接之后,将会相互配合下载小程序到9260 cpu的内置2*4KiBsram中并执行,这个小程序就是applet。applet可以做很多事情:配置系统时钟,配置sdram,配置nand接口,将文件烧写到nand上。

  我使用的sam-ba是从官网down的当前最新版2.15,windows版本。

  windows下编译applet需要几个工具:1 Sourcery CodeBench。2 Coreutils windows版。3 make工具 windows版。这几个工具都是免安装的,不过需要配置环境变量指向这些路径,会用linux的人应该都知道怎么配置。

  安装好sam-ba后,9260对应的applet在这个路径下:Program Files\Atmel\sam-ba_2.15\applets\legacy\sam-ba_applets,在这个路径下,首先发现的应该是Makefile文件,里边内容有点多,删减一下,像这样:

all: extram_applet lowlevelinit_applet nandflash_applet

extram_applet:
    (cd extram && $(MAKE) BOARD=at91sam9260-ek CHIP=at91sam9260 MEMORIES=sram -f Makefile clean all)
lowlevelinit_applet:
    (cd lowlevelinit && $(MAKE) BOARD=at91sam9260-ek CHIP=at91sam9260 MEMORIES=sram -f Makefile clean all)
nandflash_applet:
    (cd nandflash && $(MAKE) BOARD=at91sam9260-ek CHIP=at91sam9260 MEMORIES=sdram -f Makefile clean all)

  修改库路径下的源文件:Program Files\Atmel\sam-ba_2.15\applets\legacy\at91lib\boards\at91sam9260-ek\board_memories.c 和board.h。board.h主要修改IO的与单板的对应,SDRAM位宽,大小等。

  board_memories.c主要是修改sdram控制器的寄存器和nand接口的寄存器,对应这两个函数BOARD_ConfigureSdram48MHz,BOARD_ConfigureNandFlash48MHz。

  我使用的板子配置如下:

  (SDRAM 16MiB,16bit)

WRITE(AT91C_BASE_SDRAMC, SDRAMC_CR, AT91C_SDRAMC_NC_9
                                        | AT91C_SDRAMC_NR_13
                                        | AT91C_SDRAMC_CAS_2
                                        | AT91C_SDRAMC_NB_4_BANKS
                                        | sdrc_dbw
                                        | AT91C_SDRAMC_TWR_1
                                        | AT91C_SDRAMC_TRC_4
                                        | AT91C_SDRAMC_TRP_1
                                        | AT91C_SDRAMC_TRCD_1
                                        | AT91C_SDRAMC_TRAS_2
                                        | AT91C_SDRAMC_TXSR_3);

(NAND 128MiB 8bit)

AT91C_BASE_SMC->SMC_SETUP0 = 0x00000001;
    AT91C_BASE_SMC->SMC_PULSE0 = 0x07070703;
    AT91C_BASE_SMC->SMC_CYCLE0 = 0x00070007;
    AT91C_BASE_SMC->SMC_CTRL0  = (AT91C_SMC_READMODE
                                  | AT91C_SMC_WRITEMODE
                                  | AT91C_SMC_NWAITM_NWAIT_DISABLE
                                  | ((0x1 << 16) & AT91C_SMC_TDF));

  修改applet源文件:Program Files\Atmel\sam-ba_2.15\applets\legacy\sam-ba_applets

lowlevelinit\main.c

extram\main.c

nandflash\main.c

  修改好后就可以编译了,在cmd 下 切换到 Program Files\Atmel\sam-ba_2.15\applets\legacy\sam-ba_applets 然后 make all,这样applet就完成了。

  最后,修改下脚本文件Program Files\Atmel\sam-ba_2.15\tcl_lib\at91sam9260-ek\at91sam9260-ek.tcl 将其中SDRAM位宽更改为16bit。

  最后的最后,用TTL串口连接板子的调试串口与电脑,打开sam-ba,板子选择at91sam9260-ek,连接成功。

3、修改bootstrap。

  针对9260mpu,atmel官方分别提供了mdk、iar、gcc下的工程代码,这样,需要做的事情就很少了,本人使用的是mdk的工程,修改的地方与applet大体相似,board.h、board_memories.c(nand、sdram)、board_lowlevel.c(时钟配置),然后在工程的target options 中的define中填入这些:at91sam9260,ORIGIN_nandflash,DESTINATION_sdram,OP_BOOTSTRAP_on,FROM_ADDR=0x40000,DEST_ADDR=0x20020000,BIN_SIZE=0x400000,TRACE_LEVEL意思是bootstrap将会从nand的0x40000处拷贝代码到SDRAM的0x20020000处,总共拷贝0x400000字节,完成后跳转到0x20020000地址。修改完后编译,备用。

4、内核源码获取与打补丁。

  内核下载链接:https://www.kernel.org/

  针对atmel处理器的补丁下载链接:http://maxim.org.za/at91_26.html

  在ubuntu下使用patch命令对内核打补丁。

5、基于ubuntu的开发环境搭建。

  从friendlyarm网站下载arm-linux-gcc-4.3.2,解压(务必在linux环境下)后得到可执行文件,cp命令将其移动到/usr/local/arm/下,当然,这需要管理员权限。

  编辑/etc/environment文件,在PATH="...."末尾加上:/usr/local/arm/4.3.2/bin,然后source一下environment文件,完成。终端中输入:arm-linux-gcc -v 显示其版本号等信息。

  要用menuconfig的话还要安装一个库,命令如下:sudo apt-get install libncurses5-dev

6、内核配置与编译。

  这个,太多了,我主要更改的地方是nand分区的源码以及sdram控制器的配置,分区是这样的:

  0x0CC40000
  80M user
  0x03640000
  32M root
  0x00440000
  4M kernel
  0x00040000
  256K bootloader
  0x00000000

menuconfig中配置支持jffs2文件系统、开启EABI支持、bootargs设置为:mem=16M console=ttyS0,115200 root=/dev/mtdblock2 rootfs=jffs2 rw

之后make ARCH=arm CROSS_COMPILE=arm-linux- zImage,等待吧~

7、根文件系统镜像制作,busybox编译与安装。

  busybox官方网站:www.busybox.net

  本人使用的是1.9.2版本,menuconfig里没什么好配置的,

在at91sam9260处理器上调试linux2.6.33.7的过程的更多相关文章

  1. linux-2.6.33移植到FL2440

    宿主机:ubuntu10.04 目标机:fl2440 交叉编译器:arm-linux-gcc-3.4.1 交叉编译器路径:/usr/local/arm/3.4.1 要移植的内核版本:linux-2.6 ...

  2. 2019-11-29-WPF-依赖属性绑定不上调试方法

    原文:2019-11-29-WPF-依赖属性绑定不上调试方法 title author date CreateTime categories WPF 依赖属性绑定不上调试方法 lindexi 2019 ...

  3. 使用Vs2012开发Metro时在另一台win8平板上调试的步骤

    需求:开发一个metro应用,因为要给平面设计师参谋, 需要将软件安装在win8平板上. 环境:开发机是win8,  win8平板是win8.1rtm , 是用老的win7平板改装的. 步骤: 1:拷 ...

  4. [转载]在iTOP-4412开发板上调试helloworld应用

    本文转自迅为论坛:http://www.topeetboard.com 1.安装ADB驱动 在开发板上调试 Android 应用,首先要安装 ADB 驱动. 通过“SDK Manager.exe”来安 ...

  5. FL2440移植Linux2.6.33.7内核

    kernel version:2.6.33.7 /linux-2.6.33.7 OS:CentOS 6.4 cross-compilation chain:arm-linux-4.3.2 /usr/l ...

  6. 如何在IOS上调试Hybrid应用

    最近在找关于在xcode上调试Hybrid应用的方法,比如我想进行断点调试.日志打印.屏幕适配等等,刻意去搜了下方法,虽然之前已经大致知道了,这里系统归纳一下,原文在https://developer ...

  7. 利用jvisualvm使用btrace进行线上调试案例

    用途:btrace主要用于线上调试.通过btrace,可在不改动代码的前提下,方便的发现以下问题: 1.定位性能慢的接口服务: 2.实时打印堆栈信息,定位死锁位置: 3.定位占用大量内存空间的代码块: ...

  8. 利用ChromeCROSS可以在chrome浏览器上调试跨域代码

    利用ChromeCROSS可以在chrome浏览器上调试跨域代码 1.下载ChromeCROSS文件,可百度下载,或者在我的百度云上下载:链接: https://pan.baidu.com/s/10_ ...

  9. 问题 Windows7VMware14安装虚拟机时出现 此主机不支持虚拟化实际模式。需要具备 Intel“VMX 不受限客户机”功能才能在 Intel 处理器上运行此虚拟机。 模块“CPUIDEarly”启动失败。

    问题 Windows7VMware14安装虚拟机时出现 此主机不支持虚拟化实际模式.需要具备 Intel“VMX 不受限客户机”功能才能在 Intel 处理器上运行此虚拟机. 模块“CPUIDEarl ...

随机推荐

  1. 「Poetize10」能量获取

    描述 Description “封印大典启动,请出Nescafe魂珠!”随着 圣主applepi一声令下,圣剑护法rainbow和魔杖护法freda将Nescafe魂珠放置于封印台上.封印台是一个树形 ...

  2. 【转】spin_lock & mutex_lock的区别? .

    原文网址:http://blog.csdn.net/wilsonboliu/article/details/19190861 本文由该问题引入到内核锁的讨论,归纳如下   为什么需要内核锁? 多核处理 ...

  3. [Design Pattern] Facde Pattern 简单案例

    Facade Pattern, 即外观模式,用于隐藏复杂的系统内部逻辑,提供简洁的接口给客户端调用,属于结构类的设计模式.我会将其名字理解为,门户模式. 下面是 Facade Pattern 的一个简 ...

  4. openStack 云平台使用一般杂记

    1. To launch an instance,you must at least specify the flavor,image name,network,security group,keyp ...

  5. 百度地图API 重新生成点聚合的功能

    百度点聚合用来解决加载大量点要素到地图上产生覆盖现象的问题,并提高性能. http://api.map.baidu.com/library/MarkerClusterer/1.2/docs/symbo ...

  6. SCGHR_存储过程(eSP_IDChangeStart)_政治面貌为什么不能正确更新

    1.问题描述:该SP中姓名,工号能够顾正确修改,但是政治面貌不能,为什么? 2.问题定位:那么该SP中其他设置都是正确的,就不要浪费时间看SP的其他设置,错误源就在 政治面貌 这一小块中. 3.修改: ...

  7. MVC三层架构编程(Dao、service、servlet 之间的关系)

    木哈哈~先开心一会儿,人生的第一篇博客aaa.我一定好好写.不过之前也没怎么看别人写过,还是有点小激动呢,加油.好好总结,会总结的宝宝才会有提高! 今天想总结一下mvc三层架构模型编程,宝宝学习不怎么 ...

  8. SQL 结构化查询语言手册

    摘自该学习网站: http://www.w3school.com.cn/sql/ 新学到的几点: and 和or 连用,记得用括号.                2.SQL通配符补充   例如:   ...

  9. memcache和memcached

    一:Memcached.memcached.memcache. 其中首字母大写的Memcached,指的是Memcached服务器,就是独立运行Memcached的后台服务器,用于存储数据的“数据库” ...

  10. webform初识

    webform是个bs结构的程序, winform 是个cs结构的程序: aspx 是由 网页和cs代码 构成的: aspx的网页控件是 有, 服务器控件和客户端控件组成的. 客户端控件,就是HTML ...