Coder Social home page Coder Social logo

armdeveloperecosystem / arm-learning-paths Goto Github PK

View Code? Open in Web Editor NEW
59.0 7.0 116.0 420.55 MB

Arm Learning Paths: a repository of how-to content for software developers

License: Other

HTML 15.85% JavaScript 61.07% CSS 5.06% Python 7.27% Dockerfile 0.09% Shell 0.58% C 0.09% C++ 6.70% Assembly 2.30% CMake 0.98%

arm-learning-paths's Introduction

The Arm Learning Paths website is available at https://learn.arm.com/

Arm Learning Paths

This repository contains the source files for the Arm Learning Paths static website, serving learning based technical content for Arm software developers.

The Learning Paths created here are maintained by Arm and the Arm software development community. Learning Paths are meant to solve problems developers face while developing on and for Arm. Helpful instructions to install a variety of software tools are also provided.


How To Contribute

All contributions are welcome as long as they relate to software development for the Arm architecture.

  • Write a Learning Path (or improve existing content)
    • Fork this repo and submit pull requests; follow the step by step instructions in Create a Learning Path on the website.
  • Ideas for a new Learning Path
    • Create a new GitHub idea under the Discussions area in this GitHub repo.
  • Log a code issue (or other general issues)
    • Log a issue on GitHub or from the Learning Path on the left-hand nav bar.

Note that all site content, including new contributions, is licensed under a Creative Commons Attribution 4.0 International license.


Other Arm Learning Resources

The Learning Path site contains software-based Learning Paths and Tool Install Guides, and complements the other Arm resources in the Arm Developer Hub and beyond. Here are links to other areas depending on what/how you want to learn:

Directory Structure

This site is built on the Hugo web framework, ideal for generating static websites. Below is a brief description of the key files and directories:

  • /content
    • contains all Learning Paths and install guides
  • /themes
    • where the html elements are defined to render /content into stylized HTML
  • /tools
    • python scripts to automatically check website integrity
  • LICENSE files
    • where the license information is contained
  • config.toml
    • where the high-level website configuration settings are defined

arm-learning-paths's People

Contributors

armflorentlebeau avatar arnaud-de-grandmaison-arm avatar bmanclark avatar danielnguyen-arm avatar dav-mac avatar davidspickett avatar dawidborycki avatar elm8116 avatar fallingcat avatar gabrieldpeterson avatar haynesmatt avatar ijobsyuying avatar jasonrandrews avatar jonathandavies-arm avatar jsrz avatar juliegaskin avatar kaspermeck-arm avatar kbeyls avatar keilchris avatar lizwar avatar madeline-underwood avatar managa02 avatar markos avatar mhall119 avatar odidev avatar pareenaverma avatar ramin-zaghi avatar ronansynnottarm avatar stephentheobald-arm avatar zachlasiuk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

arm-learning-paths's Issues

Unknown --project argument

At https://learn.arm.com/learning-paths/microcontrollers/vcpkg-tool-installation/usage/ there is this info:

vcpkg activate --project ../my-config.json

But if I try that I get:

vcpkg activate --project .\vcpkg-configuration.json
error: unexpected switch: --project

And I am on a quite recent vcpkg version:

vcpkg --version
vcpkg package management program version 2023-12-12-1c9ec1978a6b0c2b39c9e9554a96e3e275f7556e

And that switch is not part of the help doc for vcpkg activate either.

Build and Run 64-bit Arm Yocto Linux image on Qemu

I am trying to run this learning path on a Raspberry Pi400 with Ubuntu 22.04.
There is at least 100Gbytes of free storage
I successfully follow all the step I reach 'bitbake' - when I get failures, so far, building libgcrypt, opkg-utils and openssl-native. What is likely to be wrong?

I note that the branch in the web page is 4.0.6 where the current version in the yocto project is 4.0.15. Is this going to be significant? What is the CLI to change to the new branch?

Review question results should highlight what was the right answer if you make an incorrect choice

Type of issue

  • Instructions in the learning path do not work.
  • Spelling error in the learning path.
  • Instructions in the learning path are hard to follow.
  • Instructions to contribute a new learning path are not clear.
  • Other

Describe the issue
It would be cool if the review section would highlight what was the correct answer when showing results. As the explanation sometimes may not make it 100% clear what would have been the correct choice.

To Reproduce
Take a random learning path e.g. https://learn.arm.com/learning-paths/servers-and-cloud-computing/arm_pmu/_review/ and go to the review page. Answer the questions and get one wrong. This shows you that your answer was wrong but does not highlight the correct one as well.

Expected behavior
The review results would tell you what the correct answer was, in the case where your answer was wrong.

Screenshots
Screenshot from 2023-11-01 12-14-52

In this case the explanation makes it very clear that "top" is the answer, but that may not always be the case and may be less clear if you were already confused by the question itself.

Desktop (please complete the following information):

  • OS: Ubuntu Linux 20.04
  • Browser: Chrome
  • Version: 118.0.5993.117

Python for Windows on Arm

It seems that the platform module for python 3.11 compiled for ARM is returning a hard coded release version.

python3.11 compiled for ARM
Python 3.11.1 (tags/v3.11.1:a7a450f, Dec 6 2022, 19:44:02) [MSC v.1934 64 bit (ARM64)] on win32
Type "help", "copyright", "credits" or "license" for more information.

import platform
platform.uname()
uname_result(system='Windows', node='jsam', release='10', version='10.0.25967', machine='ARM64')

Python 3.12 pulled from Windows store
Python 3.12.0 (tags/v3.12.0:0fb18b0, Oct 2 2023, 13:03:39) [MSC v.1935 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.

import platform
platform.uname()
uname_result(system='Windows', node='jsam', release='11', version='10.0.25967', machine='ARM64')

running uname.py

PS C:\Users\james> python .\uname.py
Python version 3.11.1
Machine is Windows 10 ARM64

PS C:\Users\james> py.exe .\uname.py
Python version 3.12.0
Machine is Windows 11 ARM64

Markdown code blocks without a type are allowed but can be misinterpreted

Type of issue

  • Instructions in the learning path do not work.
  • Instructions in the learning path are hard to follow.
  • Spelling error in the learning path.
  • Instructions to contribute a new learning path are not clear.
  • Other

Describe the issue

https://learn.arm.com/learning-paths/cross-platform/_example-learning-path/appendix-1-formatting/ says "You can add code snippets in the standard markdown format.".

Which is true, until you try to test a learning path and a single line block will fail because it has no commands. The first line is consumed as the "type" and then there are no lines left to be potential commands. For example:

```
Plain text goes here.
```

The type becomes "Plain text goes here." with no commands attached to the block. This leads to:

Traceback (most recent call last):
  File "./tools/maintenance.py", line 171, in <module>
    main()
  File "./tools/maintenance.py", line 148, in main
    check_lp(args.instructions, args.link, args.debug)
  File "./tools/maintenance.py", line 60, in check_lp
    res.append(check.check(lp_path + "/" + i[0], start=launch, stop=terminate))
  File "/home/davspi01/work/open_source/arm-learning-paths/tools/check.py", line 196, in check
    for j in range(0, t["ncmd"]):
KeyError: 'ncmd'

Which we could fix, but I think the real issue is we should clarify how blocks should or must be tagged with a type.

There are 2 workarounds to this first problem.

  1. Only have plain text that is at least 2 lines.
  2. Assign it some bogus type name or use text or output as the other learning paths have.

However, I think that's a poor user experience especially if you're using Markdown for its wide appeal.

If we want to require that all blocks have a type line, let's decide on a set of valid type names and throw a nice informative error if one of them is not found.

If we are not going to do that and instead allow the completely standard syntax, there is a gotcha that must be mentioned. If the first line of the plain text includes a recognised type like "bash", it will run the subsequent lines as bash. For example:

```
bash is cool
This is not a command.
```

Or even:

```
cool is bash
This is also not a command
```

Which I think would be incredibly confusing to a new contributor.

To Reproduce
Create a learning path page with any of the blocks shown above, run the maintenance script on it.

Expected behavior
Either:

  1. Completely standard markdown code blocks continue to be allowed, and we put in a fix for the lack of commands for single line blocks, and document the gotcha concerning the first line.
  2. All code blocks must have a type line at the start, and unknown types are raised to the user with a list of valid types they can choose from.
  3. Something else I haven't though of :)

Desktop (please complete the following information):

  • OS: Ubuntu Linux 20.04
  • Browser: chrome
  • Version: 119

Additional context
Original "fix" for this was #552 but this broke existing paths, so will be reverted.

Configure and run WSL with various Linux distributions

From Windows, bash.exe (or just bash) can be used to run commands in WSL.
You can enter the default WSL distribution by running bash from a Windows Command Prompt:

could be simplified to:

From Windows, Bash can be used to run commands in WSL.
You can enter the default WSL distribution by running bash from a Windows Command Prompt:
...

Prepare AVH instances of Raspberry Pi 4

"Settings > Personal Access Tokens, click on Generate new token, and save the token locally."

This line does not specify what permissions should be granted to the new token, nor what type of token (classic vs fine-graned tokens). Will either work?

Enable systemd in WSL

for the example:
systemctl status ssh

ssh may not be installed at this point. perhaps use a different service such as cron

Advice to use alignas for cache alignment

Reading https://learn.arm.com/learning-paths/cross-platform/memory-latency/latency-and-cache-alignment/ I don't think it is right to present cache alignment with manually packing the structure:

  • As pointed out latter in the page it is fragile if the data structure change
  • It is platform specific (the packed attribute may not be there, same with posix_memalign which is not available on windows platform).
  • It may hurt the performance if the fields within the structure are not aligned because of the packing.

I think it would make sense to introduce the keyword alignas (ref) which overcome these issues and is available in C and C++.

LP Next Steps: Arm IP tag leads to 404

When completing a learning path until "Next Steps" in "Explore Tags", the tags related to Arm IP lead to a page not found error.
Seen with "Neoverse" tag in learning-paths/server-and-cloud/codec/_next-steps/
and with "Cortex-M" tag in learning-paths/microcontroller/cmsis-dsp-tests/_next-steps/

Explanations

Please give more explanations.
For example, should I always delete what I have build with bitbake for futher use or not?
This takes hug amount of space on a disk (40G and plus)

Get started with Yocto Linux on Qemu

| /home/huberz/repos/poky/build-qemu-arm64/tmp/work/x86_64-linux/libdnf-native/0.66.0-r0/git/libdnf/repo/../conf/ConfigRepo.hpp:91:45: error: template argument 1 is invalid
| 91 | OptionChild<OptionNumberstd::uint32_t > & deltarpm_percentage();
| | ^
| ninja: build stopped: subcommand failed.
| WARNING: exit code 1 from a shell command.
ERROR: Task (virtual:native:/home/huberz/repos/poky/meta/recipes-devtools/libdnf/libdnf_0.66.0.bb:do_compile) failed with exit code '1'
NOTE: Tasks Summary: Attempted 2175 tasks of which 0 didn't need to be rerun and 1 failed.

Summary: 1 task failed:
virtual:native:/home/huberz/repos/poky/meta/recipes-devtools/libdnf/libdnf_0.66.0.bb:do_compile
Summary: There were 4 WARNING messages.
Summary: There was 1 ERROR message, returning a non-zero exit code.

Broken.

SSH key name for different learning paths

I have raised the PR for changing key_name = “id_rsa” and linked all the ssh key generation with a ssh document present in install-guides.

A new PR which was raised and merged for mysql learning path. Key name in that is given as mysql_key and undone the previously merged changes of mysql learning path.

Can you please let me know if I need to follow the changes done in mysql learning path for all learning path or can I continue using key_name = “id_rsa” for future learning paths?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.