forked from thesofproject/sof
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
74 changed files
with
22,336 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
--codespell | ||
--codespellfile scripts/spelling.txt | ||
--ignore C99_COMMENT_TOLERANCE | ||
--no-tree | ||
--strict | ||
-g |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
--- | ||
# Basic build test | ||
|
||
name: build | ||
|
||
# yamllint disable-line rule:truthy | ||
on: [pull_request, push, workflow_dispatch] | ||
|
||
env: | ||
CMAKE_C_FLAGS: "-Werror -Wall -Wmissing-prototypes\ | ||
-Wimplicit-fallthrough=3 -Wpointer-arith" | ||
|
||
jobs: | ||
build-test: | ||
runs-on: ubuntu-22.04 | ||
steps: | ||
- uses: actions/checkout@v3 | ||
with: {fetch-depth: 50, submodules: recursive} | ||
|
||
- name: install tools | ||
run: sudo apt update && sudo apt install -y ninja-build | ||
|
||
- name: build | ||
run: cmake -B build/ -G Ninja | ||
- run: cmake --build build/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
--- | ||
# SPDX-License-Identifier: BSD-3-Clause | ||
# Tools that can save round-trips to github and a lot of time: | ||
# | ||
# yamllint -f parsable this.yml | ||
# pip3 install ruamel.yaml.cmd | ||
# yaml merge-expand this.yml exp.yml && diff -w -u this.yml exp.yml | ||
# | ||
# github.com also has a powerful web editor that can be used without | ||
# committing. | ||
|
||
name: cppcheck | ||
|
||
# yamllint disable-line rule:truthy | ||
on: [pull_request, push] | ||
|
||
jobs: | ||
cppcheck: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v2 | ||
with: {fetch-depth: 50, submodules: recursive} | ||
|
||
- name: apt install cppcheck | ||
run: sudo apt update && sudo apt-get -y install cppcheck | ||
|
||
# TODO enable more types of checks as they are fixed | ||
- name: run cppcheck | ||
run: cppcheck --platform=unix32 --force --max-configs=1024 | ||
--inconclusive --quiet --inline-suppr . |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
--- | ||
# SPDX-License-Identifier: BSD-3-Clause | ||
# Tools that can save round-trips to github and a lot of time: | ||
# | ||
# yamllint -f parsable this.yml | ||
# pip3 install ruamel.yaml.cmd | ||
# yaml merge-expand this.yml exp.yml && diff -w -u this.yml exp.yml | ||
# | ||
# github.com also has a powerful web editor that can be used without | ||
# committing. | ||
|
||
name: codestyle | ||
|
||
# yamllint disable-line rule:truthy | ||
on: [pull_request] | ||
|
||
jobs: | ||
yamllint: | ||
runs-on: ubuntu-22.04 | ||
steps: | ||
- uses: actions/checkout@v2 | ||
with: | ||
fetch-depth: 50 | ||
submodules: recursive | ||
|
||
- name: run yamllint | ||
run: yamllint .github/workflows/*.yml | ||
checkpatch: | ||
runs-on: ubuntu-22.04 | ||
steps: | ||
- uses: actions/checkout@v3 | ||
with: | ||
ref: ${{ github.event.pull_request.head.sha }} | ||
fetch-depth: ${{ env.PR_FETCH_DEPTH }} | ||
|
||
- name: install codespell | ||
run: sudo apt update && sudo apt install -y codespell | ||
|
||
- name: checkpatch.pl PR review | ||
uses: webispy/checkpatch-action@v9 | ||
env: | ||
CHECKPATCH_COMMAND: ./scripts/checkpatch.pl |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
build/ | ||
.checkpatch-camelcase.git.* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
# SPDX-License-Identifier: BSD-3-Clause | ||
|
||
cmake_minimum_required(VERSION 3.10) | ||
|
||
project(SOF_RIMAGE C) | ||
|
||
if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) | ||
message(STATUS "No CMAKE_BUILD_TYPE, defaulting to Debug") | ||
set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Build Type" FORCE) | ||
endif() | ||
|
||
add_executable(rimage | ||
src/file_simple.c | ||
src/cse.c | ||
src/css.c | ||
src/plat_auth.c | ||
src/hash.c | ||
src/pkcs1_5.c | ||
src/manifest.c | ||
src/ext_manifest.c | ||
src/rimage.c | ||
src/toml_utils.c | ||
src/adsp_config.c | ||
src/misc_utils.c | ||
src/file_utils.c | ||
src/elf_file.c | ||
src/module.c | ||
tomlc99/toml.c | ||
) | ||
|
||
set_property(TARGET rimage PROPERTY C_STANDARD 99) | ||
|
||
target_compile_options(rimage PRIVATE | ||
-Wall -Werror -Wmissing-prototypes -Wimplicit-fallthrough | ||
) | ||
|
||
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER 9.1) | ||
target_compile_options(rimage PRIVATE -Wno-char-subscripts) | ||
endif() | ||
|
||
# Windows builds use MSYS2 https://www.msys2.org/ to get linux tools and headers. | ||
# MSYS_INSTALL_DIR variable points to MSYS2 installation directory. | ||
# You may pass it as environmental or cmake configure variable. | ||
if(${CMAKE_HOST_WIN32}) | ||
cmake_minimum_required(VERSION 3.20) | ||
if(DEFINED ENV{MSYS_INSTALL_DIR} AND NOT MSYS_INSTALL_DIR) | ||
set(MSYS_INSTALL_DIR $ENV{MSYS_INSTALL_DIR}) | ||
endif() | ||
|
||
if(MSYS_INSTALL_DIR) | ||
cmake_path(IS_ABSOLUTE MSYS_INSTALL_DIR IS_MSYS_INSTALL_DIR_ABSOLUTE) | ||
if(NOT IS_MSYS_INSTALL_DIR_ABSOLUTE) | ||
message(FATAL_ERROR "Please provide absolute path to MSYS2 installation | ||
setting MSYS_INSTALL_DIR env variable") | ||
endif() | ||
# Include standard posix headers. Requires pacman openssl-devel package. | ||
cmake_path(APPEND MSYS_INSTALL_DIR "usr" "include" OUTPUT_VARIABLE MSYS_SYSTEM_INCLUDE_PATH) | ||
target_include_directories(rimage PRIVATE "${MSYS_SYSTEM_INCLUDE_PATH}") | ||
endif() | ||
endif() | ||
|
||
target_link_libraries(rimage PRIVATE crypto) | ||
|
||
target_include_directories(rimage PRIVATE | ||
src/include/ | ||
tomlc99/ | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
/* | ||
* BSD 3 Clause | ||
* Copyright (c) 2016, Intel Corporation | ||
* All rights reserved. | ||
* | ||
* Redistribution and use in source and binary forms, with or without | ||
* modification, are permitted provided that the following conditions are met: | ||
* | ||
* 1. Redistributions of source code must retain the above copyright notice, | ||
* this list of conditions and the following disclaimer. | ||
* | ||
* 2. Redistributions in binary form must reproduce the above copyright notice, | ||
* this list of conditions and the following disclaimer in the documentation | ||
* and/or other materials provided with the distribution. | ||
* | ||
* 3. Neither the name of the copyright holder nor the names of its | ||
* contributors may be used to endorse or promote products derived from this | ||
* software without specific prior written permission. | ||
* | ||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE | ||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | ||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | ||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | ||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | ||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
* POSSIBILITY OF SUCH DAMAGE. | ||
*/ | ||
|
||
|
||
// Copyright (c) 2003-2014 Cadence Design Systems, Inc. | ||
// | ||
// Permission is hereby granted, free of charge, to any person obtaining | ||
// a copy of this software and associated documentation files (the | ||
// "Software"), to deal in the Software without restriction, including | ||
// without limitation the rights to use, copy, modify, merge, publish, | ||
// distribute, sublicense, and/or sell copies of the Software, and to | ||
// permit persons to whom the Software is furnished to do so, subject to | ||
// the following conditions: | ||
// | ||
// The above copyright notice and this permission notice shall be included | ||
// in all copies or substantial portions of the Software. | ||
// | ||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. | ||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY | ||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, | ||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE | ||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
|
||
|
||
Files with 2-Clause BSD licence: | ||
|
||
src/include/rimage/elf.h | ||
|
||
/* | ||
* Derived from: | ||
* $FreeBSD: src/sys/sys/elf32.h,v 1.8.14.1 2005/12/30 22:13:58 marcel Exp $ | ||
* $FreeBSD: src/sys/sys/elf64.h,v 1.10.14.1 2005/12/30 22:13:58 marcel Exp $ | ||
* $FreeBSD: src/sys/sys/elf_common.h,v 1.15.8.1 2005/12/30 22:13:58 marcel Exp $ | ||
* $FreeBSD: src/sys/alpha/include/elf.h,v 1.14 2003/09/25 01:10:22 peter Exp $ | ||
* $FreeBSD: src/sys/amd64/include/elf.h,v 1.18 2004/08/03 08:21:48 dfr Exp $ | ||
* $FreeBSD: src/sys/arm/include/elf.h,v 1.5.2.1 2006/06/30 21:42:52 cognet Exp $ | ||
* $FreeBSD: src/sys/i386/include/elf.h,v 1.16 2004/08/02 19:12:17 dfr Exp $ | ||
* $FreeBSD: src/sys/powerpc/include/elf.h,v 1.7 2004/11/02 09:47:01 ssouhlal Exp $ | ||
* $FreeBSD: src/sys/sparc64/include/elf.h,v 1.12 2003/09/25 01:10:26 peter Exp $ | ||
* | ||
* Copyright (c) 1996-1998 John D. Polstra. All rights reserved. | ||
* Copyright (c) 2001 David E. O'Brien | ||
* Portions Copyright 2009 The Go Authors. All rights reserved. | ||
* | ||
* Redistribution and use in source and binary forms, with or without | ||
* modification, are permitted provided that the following conditions | ||
* are met: | ||
* 1. Redistributions of source code must retain the above copyright | ||
* notice, this list of conditions and the following disclaimer. | ||
* 2. Redistributions in binary form must reproduce the above copyright | ||
* notice, this list of conditions and the following disclaimer in the | ||
* documentation and/or other materials provided with the distribution. | ||
* | ||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND | ||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
* SUCH DAMAGE. | ||
* | ||
*/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,105 @@ | ||
# rimage | ||
|
||
`rimage` is a DSP firmware image creation and signing tool targeting | ||
the DSP on certain Intel System-on-Chip (SoC). This is used by | ||
the [Sound Open Firmware (SOF)](https://github.com/thesofproject/sof) | ||
to generate binary image files. | ||
|
||
## Building | ||
|
||
Most SOF users never build `rimage` directly but as an ExternalProject | ||
defined by CMake in SOF. This makes sure they always use an up-to-date | ||
version of rimage and configuration files that have been fully tested. | ||
|
||
If needed, `rimage` can be built manually with the usual CMake commands: | ||
|
||
```shell | ||
$ cmake -B build/ | ||
$ make -C build/ help # lists all targets | ||
$ make -C build/ | ||
``` | ||
|
||
The `build/rimage` executable can then be copied to a directory in the | ||
PATH. Zephyr users can run `west config rimage.path | ||
/path/to/rimage/build/rimage`; Zephyr documentation and `west sign -h` | ||
have more details. | ||
|
||
## Testing rimage changes with SOF Continuous Integration | ||
|
||
This section is about leveraging SOF validation to test rimage changes | ||
_before_ submitting them to the rimage repository. | ||
|
||
Nothing here is actually specific to SOF and rimage; you can apply the | ||
same test logic to any submodule and parent on Github. In fact the same | ||
logic applies to submodule alternatives. Github is the only requirement. | ||
|
||
### Get familiar with git submodules | ||
|
||
This is unfortunately not optional for SOF and rimage. | ||
|
||
For various reasons submodules seem to confuse many git users. Maybe | ||
because the versions of the submodules are not directly visible in some | ||
configuration file like with most alternatives? Either way, an | ||
unfortunate prerequisite before doing any rimage work is to get familiar | ||
with git submodules in general. As submodules are built-in there are | ||
many resources about them on the Internet. One possible starting point | ||
is https://git-scm.com/book/en/v2/Git-Tools-Submodules but feel free | ||
to use any other good tutorial instead. Make sure you actually practice | ||
a tutorial; don't just read it. Practicing on a temporary and throw-away | ||
copy of SOF + rimage is a great idea. | ||
|
||
Obviously, you also need to be familiar with regular Github pull | ||
requests. | ||
|
||
### Run SOF tests on unmerged rimage commits | ||
|
||
First, push the rimage commits you want to be tested to any branch of | ||
your rimage fork on Github. Do _not_ submit an rimage pull request yet. | ||
|
||
Note your rimage fork must have been created using the actual "fork" | ||
button on Github so Github is aware of the connection with the upstream | ||
rimage repo. In the top-left corner you should see `forked from | ||
thesofproject/rimage` under the name of your fork. If not then search | ||
the Internet for "re-attach detached github fork". | ||
|
||
Then, **pretend** these rimage commits have already been accepted and | ||
merged (they have been neither) and submit to SOF a draft pull request | ||
that updates the main SOF branch with your brand new rimage commits to | ||
test. The only SOF commit in this SOF TEST pull request is an SOF commit | ||
that updates the rimage pointer to the SHA of your last rimage | ||
commit. If you're not sure how to do this then you must go back to the | ||
previous section and practice submodules more. | ||
|
||
Submit this SOF pull request as a Github _draft_ so reviewers are _not_ | ||
notified. Starting every pull request as a draft is always a good idea | ||
but in this case this particular SOF pull request can be especially | ||
confusing because it points at commits in a different repo and commits | ||
that are not merged yet. So you _really_ don't want to bother busy | ||
reviewers (here's a secret: some of the reviewers don't like submodules | ||
either). You can freely switch back and forth between draft and ready | ||
status and should indeed switch to draft if you forgot at submission | ||
time but you can never "un-notify" reviewers. | ||
|
||
Github has very good support for submodules and will display your SOF | ||
TEST pull request better than what the git command line can show. For | ||
instance Github will list your rimage changes directly in the SOF Pull | ||
Request. So if something looks unexpected on Github then it means you | ||
did something wrong. Stop immediately (except for switching to draft if | ||
you forgot) and ask the closest git guru for help. | ||
|
||
Search for "Submodule" in the build logs and make sure the last of your | ||
new rimage commits has been checked out. | ||
|
||
Iterate and force-push your rimage branch and your SOF TEST pull request | ||
until all the SOF tests pass. Then you can submit your rimage pull | ||
request as usual. In the comments section of the rimage pull request, | ||
point at your test results on the SOF side to impress the rimage | ||
reviewers and get your rimage changes merged faster. | ||
|
||
Finally, after your rimage changes have been merged, you can if you want | ||
submit one final SOF pull request that points to the final rimage | ||
SHA. Or, if your rimage change is not urgently needed, you can just wait | ||
for someone else to do it later. If you do it, copy the rimage git log | ||
--oneline in the SOF commit message. Find some good (and less good) | ||
rimage commit message examples at | ||
https://github.com/thesofproject/sof/commits/main/rimage |
Oops, something went wrong.