0%

像这种庞大系统的代码, 我一般喜欢先大致了解一下代码结构,然后按照执行流程阅读分析。我阅读的是高通8074平台的px4代码。

代码地址:ATLFlight/Firmware
参考文档:px4 devguide

由于没有足够的时间再去细细研究, 所以只有这么一个粗略的笔记.

============================================================================================================
##关键路径及文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
W:\uav\Firmware\src\modules\mavlink   //  信息数据处理
mavlink_main.cpp
mavlink_receiver.cpp

FastRPC -- aDSP 与 apps 之间远程调用
1. 共享内存(不包括L1/L2缓存)
2. aDSP中能支持有限的物理映射

W:\uav\Firmware\src\modules\muorb\
adsp
Krait

W:\uav\Firmware\posix-configs\eagle\flight // config 文件

W:\uav\Firmware\src\modules // 功能模块

W:\uav\Firmware\makefiles\


W:\uav\Firmware\src\drivers\rc_receiver\rc_receiver_main.cpp // 遥控器

W:\uav\Firmware\src\drivers\device\vdev.cpp # Virtual character device base class.
mavilink、uorb 继承于此类
Read more »

一直以来对这些常用的传感器不是很清楚, 有时听到名字或者简称,不知道有什么具体的用途,特地简单总结一下.

资料皆是网上获取,不能完全保证准确性.

重力传感器(gravity/g-sensor)

重力传感器是根据压电效应的原理来工作的, 将加速度转化成电压输出。简单来说是测量内部一片重物(重物和压电片做成一体)重力正交两个方向的分力大小,来判定水平方向。
应用场景:手机横竖屏幕切换、翻转静音、平衡球、各种射击、赛车游戏等。

Read more »

概述

BLSP是高通对于低速接口的一种管理方式,8074 平台含有两个BLSP(BAM Low-Speed Peripheral) 块,对应于12个BLSP端口。 每一个BLSP块含有最多六个Qualcomm Universal Peripheral (QUP)或六个Uart cores,通过相关手册查询到每个外设属于BLSP多少。结构框图如下:
BLSP

  1. BAM(Bus Access Manager)is used to move data to/from the peripheral buffers; 2.每个BLSP外设静态连接到一对BAM管道,BLSP支持BAM 和non-BAM-based 数据传输。
Read more »

问题一 : 新板子不能开机,关键点:板子2+32(ddr+emmc)换为了2+16 .

自己的uav主板回来后将软件刷入板子(高通msm8074), 板子不能正常启动.

通过分析log, 发现死在boot_images\core\boot\secboot3\hw\msm8974\sbl1\sbl1_mc.c 中 sbl1_tlmm_init() —> boot_gpio_init(), 当我屏蔽此函数后, log如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Format: Log Type - Time(microsec) - Message 
Log type: B - since boot(excluding boot rom). D - delta
B - 41663 - SBL1, Start
B - 46909 - scatterload_region && ram_init, Start
D - 30 - scatterload_region && ram_init, Delta
B - 63897 - pm_device_init, Start
D - 27297 - pm_device_init, Delta
B - 91317 - boot_flash_init, Start
D - 10919 - boot_flash_init, Delta
B - 102632 - boot_config_data_table_init, Start
D - 134932 - boot_config_data_table_init, Delta
B - 239150 - sbl1_ddr_set_params, Start
B - 241773 - Pre_DDR_clock_init, Start
D - 274 - Pre_DDR_clock_init, Delta
D - 0 - sbl1_ddr_set_params, Delta
B - 255773 - pm_driver_init, Start
D - 16134 - pm_driver_init, Delta
B - 271907 - clock_init, Start
D - 152 - clock_init, Delta
B - 274988 - Image Load, Start
B - 295209 - Tz Execution, Start
D - 193065 - Tz Execution, Delta
B - 496387 - Image Load, Start
B - 506361 - Signal PBL to Jump to RPM FW
B - 506605 - sbl1_wait_for_ddr_training, Start
B - 540399 - 1#########################################################
D - 45323 - sbl1_wait_for_ddr_training, Delta
#不屏蔽boot_gpio_init()函数,则停在此处, boot_gpio_init()中
B - 558302 - 11#########################################################
B - 685884 - Image Load, Start
B - 689391 - WDT Execution, Start
D - 213 - WDT Execution, Delta
B - 694790 - Image Load, Start
B - 707905 - sbl1_efs_handle_cookies, Start

 

Read more »

##问题一 ubuntu 密码正确进不了系统
现象:
即使密码输入正确也不能进入系统。
原因:
设置环境变量时出错,影响到系统。
解决:
开机时按住shift 进入 recovery 模式,选第二个恢复模式,12.04的界面是fsck和root选项在同一页,先选fsck解除写限制(按下fsck后等几秒即可),再选root,vi /etc/profile, vi /etc/environment 恢复下环境变量,再重新登录。

Read more »

问题一 .gitignore无效,不能过滤某些文件或路径。

现象:
在.gitignore中添加了files和directories过滤,但git status仍会显示files和directories。

原因:
在git仓库中已经存在此files和directories,其已经被git跟踪。.gitignore只对未加入版本管理的文件生效。

解决:
从版本库删除文件和目录,更新。

git rm (--cached) files directories -r -f
git commit
Read more »

The Only Fair Is Not Fair.
em

前些天去看华仔的《解救吾先生》,当“吾先生”在将死之际清唱《小丑》时,我感动得眼泛泪光。

Read more »

Platform Information :
 System: Android5.1
 Platform: Qualcomm msm8916
 Author: Andy Lee
 Email: huaqianlee@gmail.com

如有错误欢迎指出,共同学习,共同进步
 
在我第一次接触Android得时候,我就很想知道Android设备在按下电源键后是怎么启动到主界面的,但是到现在为止也没有完全理清这个过程,所以就决定从按下power键开始来分析一下这个流程。虽然Android基于Linux内核开发的一个操作系统,但是在init进程后Android附加了很多其他操作,所以其启动流程还是有比较大的差别的,关于Linux系统的启动流程可以参考我的另一篇博文:深入理解linux启动过程

因为我现在工作中用到的是高通的源码,并且高通也是目前Android手机的主流芯片,所以我就按照高通的msm8916来分析了,不过其他的也应该大同小异。
 
首先来看一下官方给出的Android系统架构:

Read more »

第一篇完全译文,因为自己对技术和英文的热爱,所以决定翻译此文,水平有限,所以肯定会有不恰当的地方,欢迎移驾至原地址:http://www.ibm.com/developerworks/linux/library/l-linuxboot/
注:因为想写一篇博文来阐述并理清Android启动的完全过程,发现了这篇文章,觉得写得十分好,帮我解答了很多疑惑。

##引言
Linux系统的启动过程由很多阶段组成,但是无论你是启动标准的x86桌面还是启动嵌入式PowerPC目标,许多流程都是惊人的相似的。这篇文章从初始化引导程序到第一个用户空间应用程序探索Linux启动进程。顺着这个流程,你将知道很多和启动相关的主题,比如:引导程序,内核解压, 初始RAM磁盘,以及其他Linux引导元素。

Read more »

刚开始接触Android源码的时候,发现在kernel里面多了一种dts文件,因为当初自学Linux时和在第一家公司做物联网模型时都是用的比较老的内核,内核代码还比较混乱,没有采用dts这种方便简洁的格式。后面才知道这是因为Linus的一句”this whole arm thing is a fucking pain in ass“促进改革的,记得Linux早期代码里面板级细节都是在C文件中描述的,代码就显得十分臃肿和混乱。如此优化之后就显得简洁多了,并且也更易于学习、移植。
 
今天准备专门来分析一下内核设备树,主要按照如下三个方向来分析:

  • Device Tree组成及用法;
  • DTS文件解析常用api介绍;
  • DTS文件的编译;
  • 高通Android源码中dts文件引用流程;
    Read more »