2017年7月

Drone CI编译kernel出现multiple target patterns错误

Tags: linux,drone

使用Drone 0.7版本的构建Linux代码时,出现以下错误:

make distclean
Makefile:114: *** multiple target patterns.  Stop.

测试查找原因后,才知道是由于目录层级太深出现的错误。向Drone的社群询问后,得知可以使用Drone的workspace功能来解决问题。workspace就是定义repo的工作目录。这是可以指定新的路径,这样就可以编译Linux代码了。

workspace:
    path: /dronebuild

这样写了后,在container中运行的路行就是/drone/dronebuild目录了。

Drone CI 0.7版本使用docker-compose搭建问题

新版本的Drone CI分离成两个服务,drone和agent。agent依赖于drone。根据手册建议,新版使用docker-compose部署更加文便,但我的一直提示异常。

drone-agent_1   | rpc: error re-connecting: websocket: bad handshake
drone-server_1  | Unable to connect agent. Invalid authorization token "Bearer" does not match ""

细看文档之后才明白是DRONE_SECRET变量设置有问题,这个在drone和agent中要设置成一样的,两个服务才互相连接。然后使用docker-compose启用就可以访问了。

docker-compose -f drone-docker.yml -d up

下面是drone-docker.ymk文件的内容,供参考:

version: '2'

services:
    drone-server:
        image: drone/drone:latest
        ports:
            - 8000:8000
        volumes:
            - /var/lib/drone:/var/lib/drone/
        restart: always
        environment:
            - DRONE_OPEN=true
            - DRONE_HOST=http://192.168.2.12:8000
            - DRONE_GOGS=true
            - DRONE_GOGS_URL=http://192.168.2.12:3000
            - DRONE_SECRET="123456"
            - DRONE_GOGS_SKIP_VERIFY=true

    drone-agent:
        image: drone/drone:latest
        command: agent
        restart: always
        depends_on:
            - drone-server
        volumes:
            - /var/run/docker.sock:/var/run/docker.sock
        environment:
            - DRONE_SERVER=ws://drone-server:8000/ws/broker
            - DRONE_SECRET="123456"
            - DOCKER_API_VERSION=1.22

ATMEL SAMA5D36的Flash分区结构

这块板使用Linux 3.6.9版本,使用了dts方式初始化bsp设备,但很多驱动上并没有对dts全整支持。Nand上的分区信息也只是靠U-Boot来传输,dts并没有配置。当前的分区信息如下:

Bootstrap: 0x00000000 ~ 0x40000, size = 256KB
U-Boot: 0x40000 ~ 0xC0000, size = 512KB
U-Boot Env: 0xC0000 ~ 0x180000, size = 768KB
DTB file: 0x180000 ~ 0x200000, size = 128KB
Kernel: 0x200000 ~ 0x800000, size = 6MB
rootfs: 0x800000 ~ 0x10000000, size = 256 - 8 = 248MB

要修改分区信息的话,Bootstrap,U-Boot的Loadaddr相关的都要修改,U-Boot传递给Kernel的mtd信息也要修改。实际上主发还是在U-Boot上,Bootstrap只需要知道U-Boot的地址就可以,Load后跳转就交给U-Boot。SAMA5D3系列的芯片使用了SAM-BA工具来提供烧写功能。

下面是SAM-BA中对NAND的烧写地址定义:

## NandFlash Mapping
set bootStrapAddr   0x00000000
set ubootAddr       0x00040000
set ubootEnvAddr    0x000c0000
set dtbAddr         0x00180000
set kernelAddr      0x00200000
set rootfsAddr      0x00800000
## u-boot variable
set kernelLoadAddr  0x22000000
set dtbLoadAddr     0x21000000 

最新文章

最近回复

  • Blackrose: 感谢拍砖!嗯,那句话...
  • aa: “Raspberry...
  • Blackrose: 外部只是帮你把芯片启...
  • : 内部时钟比外部的频率...
  • Blackrose: 你这评论比正文更有内容么
  • 7hao: CR+LF ...
  • Blackrose: 可以是你更新软件源后...
  • sxk: 博主,我的系统是ub...
  • Blackrose: 你深得精髓么
  • qihao: 这篇文章的简单总结就...

分类

归档

其它