Engine Knock - Not Piston Slap

I have a 2003 silverado 4.8l 2WD
Has 300,000km - so about 180,000miles

Just recently started it up and it has this noise, like rocks bouncing around in a tin can.
First I thought it was a rock in the heat shield of the CAT, but then I got a check engine light now. It is coming more so from under the engine somewhere, rather then the top of the hood.

The piston slap I know of, and goes away after a few minutes. This sound on cold dtart is loud, but gets slightly quieter as I drive, and it warms up? But is still noticeable?

Enging runs fine, I have all power still. Good oil pressure at 275kpa, Nothing that is different with the engine except this rock noise.

Is the knocking coming from the top end of the engine, or deeper in the engine? If its top end, could be in the valve train. If its deeper, it could be cam bearings. I'm assuming you would know crank bearings when they go, knocking does not quiet down or go away. Just something to check.