Interrupt Pipeline系列文章大纲-CSDN博客
如上文所述,目前对ipipe-arm64比较感兴趣。
在Index of /pub/xenomai/ipipe/v4.x/arm64/ (denx.de)可以下载I-pipe的patch,通过git apply到kernel.org的Linux内核。下载目录里面最新的是ipipe-core-4.19.209-cip59-arm64-12.patch。如果上面的ftp链接访问不了,试试ipipe/v4.x/arm64 · main · xenomai / download-archive · GitLab (denx.de)。
也可以直接从I-pipe的git代码仓库,直接拉取代码,切换到对应的tag。这种方式可以更清楚的看到commits记录。
# git clone https://source.denx.de/Xenomai/ipipe-arm64.git
# git checkout -b ipipe-core-4.19.209-cip59-arm64-12
从提交 · ipipe-core-4.19.209-cip59-arm64-12 · xenomai / ipipe-arm64 · GitLab (denx.de)的commits记录看,代码变动的规律如下。
- 6db10b4d:首先拿到原始的Linux代码Linux 4.19.209:
- 4b60ad81:merge到分支linux-4.19.y-cip。可以把linux-4.19.y-cip理解为用于追踪upstream代码的分支。CIP后缀代表什么意思?一个Linux Foundation支持的项目,全称为Civil Infrastructure Platform民用基础设施项目,基于Linux LTS版本。所以CIP就是长期稳定的意思。
- 11e803e0:增加版本后缀-cip59,同时打tag v4.19.209-cip59
- 4eeaf7e2:把第三步打的tag v4.19.209-cip59合并到IPIPE的ipipe/4.19.y-cip分支。ipipe/4.19.y-cip分支即为IPIPE-ARM64针对4.19.x内核的长期维护版本,里面包含了IPIPE的修改。
- 32539d81:在ipipe/4.19.y-cip分支,修改ipipe的release tag为12,并打tag ipipe-core-4.19.209-cip59-arm64-12
所以,这个思路是把upstream的修改,不断合并到ipipe自己的分支ipipe/4.19.y-cip。根据上面的分析,ipipe-core-4.19.209-cip59-arm64-12.patch是哪两个分支或commit diff出来的呢?经过对比,是第(5)步和第(2)步的git diff的结果。
另外,发现最早的基于4.19的I-pipe的tag是:提交 · ipipe-core-4.19.55-arm64-1 · xenomai / ipipe-arm64 · GitLab (denx.de),能看到最原始的修改。
最新的基于4.19的I-pipe的tag是:提交 · ipipe-core-4.19.229-cip67-arm64-13 · xenomai / ipipe-arm64 · GitLab (denx.de)。但是我还是用4.19.209的patch,对分析代码影响不大。
点击查看系列文章 =》 Interrupt Pipeline系列文章大纲-CSDN博客
原创不易,需要大家多多鼓励!您的关注、点赞、收藏就是我的创作动力!